/*************************************************************
   1. 파  일  명: common.js
   2. 업무시스템명: 통합
   3. 원 도  우 명:
   4. 프로그램개요: common script file
   5. 작   성   자: 김승한(2006/02/01)
   6. 수   정   자: 20080806 전법인 조회 추가 HCS
   
**************************************************************/
var vParam			= "";    // 화면사이에 전달할 파라미터를 저장
var vFuncNm		= "";    // 리턴시 호출할 함수명 저장
var vRETParam		= "";    // 전환된 화면에서 리턴시 전달해줄 파라미터 저장
var vSort = "T";               // 그리드 정렬 방식 전역 변수(T : Ascending, F : Descending)
var winObj = new Array();
var pGauceTransaction = null;	//가우스 트렌젝션
var vParamForPubHtml = "";
var vPopupUrl = "";
var vXMousePos = 0;
var vYMousePos = 0;

var vDatasetObject="";

var vPopupUrl="";
var vBottommsg = "";

var End_day = "";                    /*차수마감여부*/
var Acc_Auh = "N";                   /*세목권한여부*/

//==============================================================================
//Description	: 최초 화면 오픈시 처리 (BEAN) - 시설물
//Parameter		: pGauceTransaction=연결 트랜잭션, pWorkType=작업 구분
//Return Value	: 없음
//==============================================================================
function fBEANAutoSubmit(pWorkType, pParam) {

	//TC: 현재 html URL을 jsp URL로 변경 작업	(예: .ServerIP=127.0.0.1:8080/ig/a.jsp; .Action="/jsp/a_act.jsp";)
	//TC: jsp 요청시에 Get 방식으로 pWorkType(작업구분) Param을 붙인다.
	var vURLArray = document.URL.split("jsp/");
	pGauceTransaction.ServerIP = vURLArray[0];
	
	//var aa="/jsp/"+  vURLArray[1].replace(".jsp", "_act.jsp")+"?sWorkType="+pWorkType+"&";

	pGauceTransaction.Action = "/jsp/"+ vURLArray[1].replace(".jsp", "_act.jsp")+"?sWorkType="+pWorkType+"&";
	pGauceTransaction.Parameters = pParam;
//alert("action=> "+ "/jsp/"+ vURLArray[1].replace(".jsp", "_act.jsp")+"?sWorkType="+pWorkType+"&");
	//TC: Action Property 에 설정된 URL로 Submit()
	pGauceTransaction.Post();
}







//==============================================================================
//Description  	:윈도우 타이틀 설정 값 가져오기 위한 함수
//Parameter		: 없음
//Return Value : 윈도우 타이틀 값 (메뉴 구성 중 업무명)
//==============================================================================
function fGetPopupWindowTitle() {
	var vRet = "";
	var vObject = fGetHidFrm();
	//alert("vObject=" + vObject);
	if(vObject != null && vObject != "" && vObject.vWindowTitle != null && vObject.vWindowTitle != "") {
		vRet = vObject.vWindowTitle;
	}
	return vRet;
}
//==============================================================================
//Description	: 메인 화면의 hidden frame 개체 구하기
//Parameter		: 없음
//Return Value	: hid frame 객체
//==============================================================================
function fGetHidFrm() {
// 메인화면 객체 구하기
	var vObject = fGetMain();

	if ("object" == typeof(vObject.hid)) {
		vObject = vObject.hid;
	}
	if("object" == typeof(vObject)) {
	    return vObject;
	} else { 
	    return null;
	}

}

//==============================================================================
//Description	: 메인화면 객체 구하기
//Parameter		: 없음
//Return Value	: 메인화면 객체
//==============================================================================
function fGetMain() {
	var vObject = window.top;
	while("object" == typeof(vObject.opener)) {
		if(vObject.left==null || vObject.left=="") { vObject = vObject.opener.top;
		} else { break; }
	}

	return vObject;
}

//==============================================================================
//Description	: 이전화면으로부터 파라미터 받기
//Parameter		: 없음
//Return Value	: 파라미터 문자열
//==============================================================================
function fGetParam() {
	var vObject = fGetHidFrm();
	vParam = vObject.vParam;
	if(vParam != "" && vParam != null) {
		vFuncNm   = fFindParam(vParam, "RETFuncNm");    // 팝업일때 리턴시 호출해줄 opener 의 함수명
		vRETParam = fMakeRETParam(vParam);              // 전환된 화면에서 리턴시 전달해줄 파라미터
	}
	//var vDestObj = fGetParamTransObj();
	//vParam = vDestObj.vParam;

	return vParam;
}


//==============================================================================
//Description	: 파라미터 저장하기
//Parameter		: 없음
//Return Value	: 없음
//==============================================================================
function fSetParam() {
	var vObject = fGetHidFrm();
	vObject.vParam = vParam ;

	//var vDestObj = fGetParamTransObj();
	//vDestObj.vParam = vParam;
}


//==============================================================================
//Description	: 파라미터의 값의 오브젝트인지를 확인한다.
//Parameter		: 없음
//Return Value	: true, false
//==============================================================================
function fIsObject(vObject) {
	return ( (typeof(vObject)=="object" && vObject != null && vObject) != "" ? true : false);
}

//==============================================================================
//Description	: 키값 구하기
//Parameter		: vales - 원본파라미터, key - 찾는 값의 키
//Return Value	: 키에 해당하는 값
//==============================================================================
function fFindParam(values, key) {

	var vRValue = "";
	if(values != null && values.length != 0)
	{
		var vTmpParam1 = values.split(",");
		var vTmpParam2 = "";


		for(var i=0; i < vTmpParam1.length; i++) {

		    vTmpParam2 = vTmpParam1[i].split("=");

		    for(var t=0; t < vTmpParam2.length; t++) {

		        if(vTmpParam2[t]==key) {

		            vRValue = vTmpParam2[t+1];
		         }
		    }
		}
	}
	return vRValue;
}

//==============================================================================
//Description	: 전환화면에서 이전화면으로 넘겨줄 파라미터 생성
//Parameter		: pParam - 이전화면에서 넘겨받은 파라미터
//Return Value	: 전환화면에서 이전화면으로 넘겨줄 파라미터
//==============================================================================
function fMakeRETParam(pParam) {

	var vReturnValue = "";

	var vTemp = pParam.split(",");
	var j = 0;

	for(var i=0; i<vTemp.length; i++) {

		if(vTemp[i].substring(0, 3) == "RET") {

			if(j != 0) vReturnValue += ",";
			vReturnValue += vTemp[i].substring(3, vTemp[i].length);
			j++;
		}
	}

	return vReturnValue;
}


//==============================================================================
//Description	: 기존의 vRETParam의 값을 유지해야 할 필요가 있을경우 그냥 fGetParam()을 쓰시면 기존의 값이 사라집니다.이것을 방지
//						( 예) 팝업 리턴함수에서 vParam을 받아 세팅하고자할때 fGetParam() 대신 fSafeGetParam();
//Parameter		: NULL
//Return Value	: vParamTemp;
//==============================================================================
function fSafeGetParam(){

	var vTempParam=vRETParam;

	var vParamTemp = fGetParam();

	vRETParam=vTempParam;
	return vParamTemp;
}


//==============================================================================
//Description  	: 메세지 코드를 받아 첨부 메시지와 함께 메세지 작성
//Parameter    	: pMsgCode = 메시지 코드, pParam = 첨부 메시지
//Return Value	: sValue = 작성된메세지
//==============================================================================
function fGetMessage(pMsgCode, pParam) {
	var rtnValue;		//리턴받는 메세지정보(배열)
	var sValue;			//호출부로 리턴시킬 메세지

	//해당하는 코드의 메세지정보를 조회한다. -- XX_message.js
	rtnValue = rtnMessageInfo(pMsgCode, pParam);

	//조회한 메세지의 유형(버튼유형)값으로 리턴할 메세지값을 변경한다.(추후 여러유형이 적용될때 더 추가)
	if (rtnValue[3] == "1") {					//'1'인 경우는 기본
		sValue = rtnValue[4];
	} else {
		sValue = rtnValue[4];
	}

	return sValue;
}

//==============================================================================
//Description  	: 메세지 코드를 받아 첨부 메시지와 함께 Alert or Confirm 처리
//Parameter    	: pMsgCode = 메시지 코드, pParam = 첨부 메시지
//Return Value	: sValue = 'true/false' (Confirm 인 경우만 해당됨) , alert인 경우 메시지
//==============================================================================
function fAlertMessage(pMsgCode, pParam) {

	var rtnValue;		//리턴받는 메세지정보
	var sValue;			//호출부로 리턴시킬 메세지

	//해당하는 코드의 메세지정보를 조회한다. -- XX_message.js
	rtnValue = rtnMessageInfo(pMsgCode, pParam);

	//조회한 메세지의 유형에 따라 Alert or Confirm 인지 구분하여 처리(1:alert, 2:confirm, 기타 : 추후추가예정)
	if (rtnValue[3] == "1") {
		sValue = rtnValue[4];
		alert(sValue);

	} else if (rtnValue[3] == "2") {
		sValue = rtnValue[4];

		if (confirm(sValue)) {
			sValue = true;
		} else {
			sValue = false;
		}
	} else {
		sValue = rtnValue[4];
		alert(sValue);
	}

	return sValue;
}

//==============================================================================
//Description  	: 메세지 코드를 받아 첨부 메시지를 구분값에 따라 처리
//Parameter    	: pMsgCode = 메시지 코드, pParam = 첨부 메시지, pGubun = 메세지 표현 구분값
//								1. bottom 메시지창 표시			2. alert창 표시만		3. alert창 표시 후 메세지리턴
//								4. confirm창 표시만				5. confirm창 표시 후 true/false 리턴
//Return Value	: rtnValue = 3:메세제, 5:'true/false'
//==============================================================================
function fMessage(pMsgCode, pParam, pGubun) {
	var rtnValue = null;

	if (pGubun == '1') {
		fBottomMessage(pMsgCode, pParam);

	} else if (pGubun == '2') {
		alert( fGetMessage(pMsgCode, pParam));

	} else if (pGubun == '3') {
		rtnValue = fGetMessage(pMsgCode, pParam);
		alert(rtnValue);

	} else if (pGubun == '4') {
		rtnValue = rtnMessageInfo(pMsgCode, pParam);

		if (confirm(rtnValue[4])) {
			rtnValue = true;
		} else {
			rtnValue = false;
		}
		rtnValue = null;

	} else if (pGubun == '5') {
		rtnValue = rtnMessageInfo(pMsgCode, pParam);

		if (confirm(rtnValue[4])) {
			rtnValue = true;
		} else {
			rtnValue = false;
		}

	}

	return rtnValue;
}

//==============================================================================
//Description  	: 날짜값을 체크한 후 "/,-,."가 있으면 제거하고 리턴 ("20020101" 형태)
//Parameter    	: pDate - 체크할 날짜
//Return Value	: vDate - "/,-,." 문자를 제거한 8자리 수치값 (오류가 없을 경우) or ""(오류가 있을 경우)
//==============================================================================

function fCompleteDate(pDate) {

	var vDate;
	vDate = fTrim(pDate);

	// 일자값 저장 배열
	var vDateArray = new Array(3);

	// "/" 문자가 있으면
	if(vDate.match("/") == "/") {
		// "/" 문자를 구분자로 분리하여 배열에 저장
		vDateArray = vDate.split("/");

	// "-" 문자가 있으면
	} else if(vDate.match("-") == "-") {
		// "-" 문자를 구분자로 분리하여 배열에 저장
		vDateArray = vDate.split("-");

	// "." 문자가 있으면
	} else if(vDate.split(".").length > 1) {
		// "-" 문자를 구분자로 분리하여 배열에 저장
		vDateArray = vDate.split(".");

	// "/,-,."문자가 없고 길이가 8이면
	} else if(vDate.length == 8) {
		// 길이대로(년:4, 월:2, 일:2) 잘라서 배열에 저장
		vDateArray[0] = vDate.substr(0,4);
		vDateArray[1] = vDate.substr(4,2);
		vDateArray[2] = vDate.substr(6,2);
	}

	// 일자 체크 결과가 false 이면 리턴
	if(fCheckDate(vDate) == false) return "";

	// 월값이 길이가 1 이면 앞에 "0" 을 붙인다
	if(vDateArray[1].length == 1) vDateArray[1] = "0" + vDateArray[1];

	// 일값이 길이가 1 이면 앞에 "0" 을 붙인다
	if(vDateArray[2].length == 1) vDateArray[2] = "0" + vDateArray[2];

	vDate = vDateArray[0] + vDateArray[1] + vDateArray[2];

	return vDate;
}


//==============================================================================
//Description  	: 날짜(월)값을 체크한 후 2자리 수치값으로 리턴 ("01" 또는 "12" 형태)
//Parameter    	: pMonth - 체크할 날짜(월)
//Return Value	: vMonth - 2자리 수치값 (오류가 없을 경우) or ""(오류가 있을 경우)
//==============================================================================
function fCompleteMonth(pMonth) {
	var vMonth;
	vMonth = pMonth;

	// 일자 체크 결과가 false 이면 리턴
	if(fCheckMonth(vMonth) == false) return "";

	// 월값이 길이가 1 이면 앞에 "0" 을 붙인다
	if(vMonth.length == 1) vMonth = "0" + vMonth;

	return vMonth;
}


//==============================================================================
//Description  	: 날짜(일)값을 체크한 후 2자리 수치값으로 리턴 ("01" 또는 "31" 형태)
//Parameter    	: pDay - 체크할 날짜(일)
//Return Value	: vDay - 2자리 수치값 (오류가 없을 경우) or ""(오류가 있을 경우)
//==============================================================================
function fCompleteDay(pDay) {
	var vDay;
	vDay = pDay;

	// 일자 체크 결과가 false 이면 리턴
	if(fCheckDay(vDay) == false) return "";

	// 일값이 길이가 1 이면 앞에 "0" 을 붙인다
	if(vDay.length == 1) vDay = "0" + vDay;

	return vDay;
}


//==============================================================================
//Description  	: 일자값 체크 (8문자 수치여부, 년월일값의 범위, 윤년)
//Parameter    	: pDate - 체크할 날짜
//Return Value	: True / False
//==============================================================================
function fCheckDate(pDate) {
	// 일자값 저장 배열
	var vDateArray = new Array(3);

	// Null:값이 없으면 false 리턴
	if(pDate == "") {
		fMessage("WZZZZ0001", "날짜", "2");
		return false;
	}

	// "/" 문자가 있으면
	if(pDate.match("/") == "/") {
		// "/" 문자를 구분자로 분리하여 배열에 저장
		vDateArray = pDate.split("/");

		// 배열 길이가 3 이 아니면 false 리턴
		if(vDateArray.length != 3) {
			fMessage("WZZZZ0004", '구분자("/")', "2");
			return false;
		}

	// "-" 문자가 있으면
	} else if(pDate.match("-") == "-") {
		// "-" 문자를 구분자로 분리하여 배열에 저장
		vDateArray = pDate.split("-");

		// 배열 길이가 3 이 아니면 false 리턴
		if(vDateArray.length != 3) {
			fMessage("WZZZZ0004", '구분자("-")', "2");
			return false;
		}

	// "." 문자가 있으면
	} else if(pDate.split(".").length > 1) {
		// "." 문자를 구분자로 분리하여 배열에 저장
		vDateArray = pDate.split(".");

		// 배열 길이가 3 이 아니면 false 리턴
		if(vDateArray.length != 3) {
			fMessage("WZZZZ0004", '구분자(".")', "2");
			return false;
      }

   // "/"문자가 없으면
   } else {
		// 길이가 8 이 아니면 false 리턴
		if(pDate.length != 8) {
			fMessage("WZZZZ0007", "날짜", "2");
			//alert("길이가 8 이 아니다");
			return false;
		}

		// 수치가 아니면
		if(isNaN(pDate)) {
			fMessage("WZZZZ0008", "날짜", "2");
			return false;
		}

		// 길이대로(년:4, 월:2, 일:2) 잘라서 배열에 저장
		vDateArray[0] = pDate.substr(0,4);
		vDateArray[1] = pDate.substr(4,2);
		vDateArray[2] = pDate.substr(6,2);
	}

	if(isNaN(vDateArray[0])) {
		fMessage("WZZZZ0008", "년도", "2");
		return false;
	}

	if(isNaN(vDateArray[1])) {
		fMessage("WZZZZ0008", "월", "2");
		return false;
	}

	if(isNaN(vDateArray[2])) {
		fMessage("WZZZZ0008", "일자", "2");
		return false;
	}

	// 년도값이 0 부터 9999 사이의 수치가 아니면 false 리턴
	if(eval(vDateArray[0]) < 1 || eval(vDateArray[0]) > 9999) {
		fMessage("WZZZZ0003", "년도", "2");
		return false;
	}

	// 월값이 1 부터 12 사이의 수치가 아니면 false 리턴
	if(eval(vDateArray[1]) < 1 || eval(vDateArray[1]) > 12) {
		fMessage("WZZZZ0003", "월", "2");
		return false;
	}

	// 일값이 1 부터 31 사이의 수치가 아니면 false 리턴
	if(eval(vDateArray[2]) < 1 || eval(vDateArray[2]) > 31) {
		fMessage("WZZZZ0003", "일", "2");
		return false;
	}

	// 월값이 길이가 1 이면 앞에 "0" 을 붙인다
	if(vDateArray[1].length == 1) vDateArray[1] = "0" + vDateArray[1];

	// 일값이 길이가 1 이면 앞에 "0" 을 붙인다
	if(vDateArray[2].length == 1) vDateArray[2] = "0" + vDateArray[2];

	// 30 일까지 있는 달의 일 체크
	if((eval(vDateArray[1]) == 4 || eval(vDateArray[1]) == 6 || eval(vDateArray[1]) == 9 || eval(vDateArray[1]) == 11) && eval(vDateArray[2]) == 31) {
			fMessage("WZZZZ0003", "일자(일)", "2");
		return false;
	}

	// 윤년일 경우
	if(((eval(vDateArray[0]) % 4 == 0 && eval(vDateArray[0]) % 100 != 0) || eval(vDateArray[0]) % 400 == 0)) {
		// 2 월의 일 체크
		if(eval(vDateArray[1]) == 2 && eval(vDateArray[2]) > 29) {
			fMessage("WZZZZ0003", "일자(일)", "2");
			return false;
		}

	// 윤년이 아닐 경우
	} else {
		// 2월의 일 체크
		if(eval(vDateArray[1]) == 2 && eval(vDateArray[2]) > 28) {
			fMessage("WZZZZ0003", "일자(일)", "2");
			return false;
		}
	}

	return true;
}


//==============================================================================
//Description  	: 년도값 체크 (수치여부, 범위)
//Parameter    	: pYear = 체크할 년도
//Return Value	: True / False
//==============================================================================
function fCheckYear(pYear) {

   // 값이 없으면 false 리턴
   if(pYear == "") {
      fMessage("WZZZZ0001", "년도", "2");
      return false;
   }

   // 길이가 4가 아니면 false 리턴
   if(pYear.length != 4) {
      fMessage("WZZZZ0007", "년도", "2");
      return false;
   }

   // 수치가 아니면
   if(isNaN(pYear)) {
      fMessage("WZZZZ0008", "년도", "2");
      return false;
   }

   // 년도값이 0 부터 9999 사이의 수치가 아니면 false 리턴
   if(eval(pYear) < 0 || eval(pYear) > 9999) {
	  fMessage("WZZZZ0003", "년도", "2");
      return false;
   }

   return true;
}


//==============================================================================
//Description  	: 월값 체크 (수치여부, 범위(1~12월))
//Parameter    	: pMonth - 체크할 월
//Return Value	: True / False
//==============================================================================
function fCheckMonth(pMonth) {
	// 값이 없으면 false 리턴
	if(pMonth == "") {
		fMessage("WZZZZ0001", "월", "2");
		return false;
	}

	// 길이가 2보다 크면 false 리턴
	if(pMonth.length > 2) {
		fMessage("WZZZZ0007", "월", "2");
		return false;
	}

	// 수치가 아니면
	if(isNaN(pMonth)) {
		fMessage("WZZZZ0008", "월", "2");
		return false;
	}

	// 월값이 1 부터 12 사이의 수치가 아니면 false 리턴
	if(eval(pMonth) < 1 || eval(pMonth) > 12) {
		fMessage("WZZZZ0003", "월", "2");
		return false;
	}

	// 이상 없으므로 TRUE 리턴
	return true;
}


//==============================================================================
//Description  	: 일값 체크 (수치여부, 범위(1~31일))
//Parameter    	: pDay - 체크할 날짜(일)
//Return Value	: True / False
//==============================================================================
function fCheckDay(pDay) {
	// 값이 없으면 false 리턴
	if(pDay == "") {
		fMessage("WZZZZ0001", "일", "2");
		return false;
	}

	// 길이가 2보다 크면 false 리턴
	if(pDay.length > 2) {
		fMessage("WZZZZ0007", "일", "2");
		return false;
	}

	// 수치가 아니면
	if(isNaN(pDay)) {
		fMessage("WZZZZ0008", "일", "2");
		return false;
	}

	// 일값이 1 부터 31 사이의 수치가 아니면 false 리턴
	if(eval(pDay) < 1 || eval(pDay) > 31) {
		fMessage("WZZZZ0003", "일", "2");
		return false;
	}

	// 이상 없으므로 TRUE 리턴
	return true;
}


//==============================================================================
//Description  	: 기간값의 유효성 체크
//Parameter    	: pDateFrom - 기간1
// 					  pDateTo   - 기간2
//Return Value	: True / False
//==============================================================================
function fCheckDateTerm(pDateFrom, pDateTo) {
	// 두 기간값에 이상이 없으면
	if(fCheckDate(pDateFrom) || fCheckDate(pDateTo)) {
		// 기간2가 기간1보다 크면 TRUE 리턴
		if(eval(fCompleteDate(pDateTo)) - eval(fCompleteDate(pDateFrom)) >= 0) return true;
	}

	return false;
}


function fCheckDateTerm2(pDateFrom, pDateTo) {
	var reValue="true";
	// 두 기간값에 이상이 없으면
	if(fCheckDate(pDateFrom)){ reValu="true";}
	else{ reValu="falseStart"; return reValu;}
	if(fCheckDate(pDateTo)){ reValu="true";} 
	else {reValu="falseEnd"; return reValu;}
	// 기간2가 기간1보다 크면 TRUE 리턴
	if(eval(fCompleteDate(pDateTo)) - eval(fCompleteDate(pDateFrom)) >= 0){ reValu="true";}
	else {reValu="falseTerm"; return reValu;}
	return reValue;
}

//==============================================================================
//Description  	: 사번난에 입력된 파라미터가 숫자이며 자릿수가 9자리인지 Check
//Parameter    	: pNumber = 사번값 입력받는 object 이름
//Return Value	: True / False
//==============================================================================
function fCheckSabun(pNumber){

	// 값이 없으면 FALSE 리턴
	if(pNumber.value == "") {
		//alert("사번을 입력해 주십시오.");
		fMessage("WZZZZ0001", "사번", "2");
		pNumber.focus();
        return false;
    }
	//9자리가 아닌경우에 FALSE
	if(pNumber.value.length != 9){
		//alert("사번은 9자리숫자입니다.");
		fMessage("WZZZZ0007", "사번", "2");
		pNumber.focus();
		pNumber.value = "";
		return false;
	}
    // 문자열화시켜 변수에 저장
	var vNumber = pNumber.value.toString();
	// 문자열 길이만큼 loop
	for(var i=0; i<vNumber.length; i++){
		var vTemp = vNumber.substring(i, i+1);

		// 숫자가 아니면 FALSE 리턴
		if(isNaN(vTemp)) {
			//alert("사번난에 문자는 허용하지 않습니다.");
			fMessage("WZZZZ0008", "사번", "2");
			pNumber.value = "";
			pNumber.focus();
			return false;
		}
	}
    // 이상 없으므로 TRUE 리턴
	return true;
}


//==============================================================================
//Description  	: 파라미터 값이 숫자로만 이루어져있는지를 체크
//Parameter    	: pNumber - 체크할 수치 또는 문자열
//Return Value	: True / False
//==============================================================================
function fCheckNumber(pNumber)
{
	// 값이 없으면 FALSE 리턴
	if(typeof(pNumber) == "undefined") return false;
	if(pNumber.length == 0) return false;

	// 문자열화시켜 변수에 저장
	var vNumber = pNumber.toString();

	// 문자열 길이만큼 loop
	for(var i=0; i<vNumber.length; i++) {
		var vTemp = vNumber.substring(i, i+1);

		// 숫자가 아니면 FALSE 리턴
		if(isNaN(vTemp)) return false;

		// 공백이면 FALSE 리턴
		if(" " == vTemp) return false;
   }

	// 이상 없으므로 TRUE 리턴
	return true;
}

//==============================================================================
//Description  	: 날짜 포맷에 맞춰 리턴
//Parameter    	: pDate - 20070101
//Return Value	: vReturnDate - 2007-01-01
//==============================================================================
function fDateFormat(pDate){
	var tmpYear  = pDate.substring(0,4);
    var tmpMonth = pDate.substring(4,6);
    var tmpDay   = pDate.substring(6,8);
    
    return tmpYear+"-"+tmpMonth+"-"+tmpDay
}
//==============================================================================
//Description  	: 종료일자와 기간을 받아 시작일자를 리턴
//Parameter    	: pEndDate - 종료일자
//						  pDateTerm  - 기간
//Return Value	: vReturnDate - 시작 일자
//==============================================================================
function fGetStartDate(pEndDate, pDateTerm) {

	// 파라미터로 받은 날짜로 Date 객체 초기화
	var vEndDate  = new Date(eval(pEndDate.toString(10).substring(0, 4)), eval(pEndDate.toString(10).substring(4, 6)) - 1, eval(pEndDate.toString(10).substring(6, 8)));

	// 파라미터로 받은 숫자만큼 이후 일자로 setting
	vEndDate.setDate(vEndDate.getDate() - eval(pDateTerm));

	//년도 문자열화
	var vTempYear   = vEndDate.getFullYear();
	vTempYear   = vTempYear.toString(10);

	//월 문자열화
	var vTempMonth  = vEndDate.getMonth()+1;
	vTempMonth  = vTempMonth.toString(10);

	//일 문자열화
	var vTempDate   = vEndDate.getDate();
	vTempDate   = vTempDate.toString(10);

	//날짜 포맷으로 변환
	var vReturnDate = vTempYear + fCompleteMonth(vTempMonth) + fCompleteDay(vTempDate);

	return vReturnDate;
}


//==============================================================================
//Description  	: 시작일자와 기간을 받아 종료일자를 리턴
//Parameter    	: pStartDate - 시작일자
//						  pDateTerm  - 기간
//Return Value	: vReturnDate - 시작 일자
//==============================================================================
function fGetEndDate(pStartDate, pDateTerm) {

	// 파라미터로 받은 날짜로 Date 객체 초기화
	var vStartDate  = new Date(eval(pStartDate.toString(10).substring(0, 4)), eval(pStartDate.toString(10).substring(4, 6)) - 1, eval(pStartDate.toString(10).substring(6, 8)));

	// 파라미터로 받은 숫자만큼 이후 일자로 setting
	vStartDate.setDate(vStartDate.getDate() + eval(pDateTerm));

	//년도 문자열화
	var vTempYear   = vStartDate.getFullYear();
	vTempYear   = vTempYear.toString(10);

	//월 문자열화
	var vTempMonth  = vStartDate.getMonth()+1;
	vTempMonth  = vTempMonth.toString(10);

	//일 문자열화
	var vTempDate   = vStartDate.getDate();
	vTempDate   = vTempDate.toString(10);

	// 날짜 포맷으로 변환
	var vReturnDate = vTempYear + fCompleteMonth(vTempMonth) + fCompleteDay(vTempDate);

	return vReturnDate;
}


//==============================================================================
//Description  	: 기간의 일자수를 리턴(시작일자와 끝일자 포함, 일자값 체크도 수행)
//Parameter    	: pDateFrom - 시작일자
//						  pDateTo   - 끝일자
//Return Value	: vDateCount - 기간의 일자수
//==============================================================================
function fGetDateCount(pDateFrom, pDateTo) {
	//두 날짜간의 기간값 체크
	if(fCheckDateTerm(pDateFrom, pDateTo) == false) return;

	var vDateFrom = new Date(eval(pDateFrom.substring(0, 4)), eval(pDateFrom.substring(4, 6)) - 1, eval(pDateFrom.substring(6, 8)));
	var vDateTo   = new Date(eval(pDateTo.substring(0, 4)),   eval(pDateTo.substring(4, 6) - 1),   eval(pDateTo.substring(6, 8)));

	var vDateCount = ((vDateTo - vDateFrom) / 86400000) + 1;

	return vDateCount;
}


//==============================================================================
//Description  	: 파라미터로 받은 일자의 요일 리턴
//Parameter    	: pDate - 일자 (8자리 숫자로 이루어진 문자열)
//Return Value	: vDay - 요일 (일,월,화,수,목,금,토 => 0,1,2,3,4,5,6)
//==============================================================================
function fGetDay(pDate) {
	var vDate = pDate.toString();

	if(fCheckDate(vDate) == false) return;

	//var vDayArray = ["일", "월", "화", "수", "목", "금", "토"];
	var vTempDate = new Date();
	vTempDate.setYear(vDate.substring(0, 4));
	vTempDate.setMonth(eval(vDate.substring(4, 6))-1);
	vTempDate.setDate(vDate.substring(6, 8));
	var vDay  = vTempDate.getDay();

	return vDay;
}


//==============================================================================
//Description  	: 문자열중의 특정 문자 또는 단어를 찾아 원하는 문자 또는 단어로 치환
//Parameter    	: pSourceString	- 원본 문자열
//						  pFindWord			- 찾을 단어
//						  ReplaceWord		- 대체 단어
//Return Value	: vReturnString 		- 대체 후 문자열
//==============================================================================
function fReplaceWord(pSourceString, pFindWord, pReplaceWord) {

	// 찾을 단어를 구분자로 분리한 문자열을 저장할 배열 변수
	var vTempArray;

	// 치환하여 리턴할 내용을 담을 변수
	var vReturnString = "";

	// 원본 문자열을 찾을 단어를 구분자로 분리
	vTempArray = pSourceString.split(pFindWord);

	// 찾을 단어의 수만큼 loop
	for(var i=0; i<vTempArray.length-1; i++) {
		// 찾을 단어 대신 대체 단어를 붙이면서 누적
		vReturnString += vTempArray[i] + pReplaceWord;
	}

	// 마지막 찾을 단어의 뒷부분 내용 추가. (찾을 단어가 없었다면 원본 문자열 전체가 됨)
	vReturnString += vTempArray[vTempArray.length-1];

	return vReturnString;
}


//==============================================================================
//Description  	: 파라미터로 받은 금액을 한글로 변환
//Parameter    	: pAmount - 금액
//Return Value	: vPriceAMT  - 한글로 변환한 값
//==============================================================================
function fConvertAmountToKorean(pAmount) {

	var vPriceTmp = pAmount;		// Parameter로 받은 값
	var vPrice = "";							// Convert할 값
	var vPriceAMT = "";					// 전체 CONV된 한글 값
	var vTmpDanWee = "";				// 각 단위별 CONV된 한글 값
	var vFlag = "N";							// 만단위 이상 FLAG값

	var PRCE_LEN   = vPriceTmp.length;
	var vFrstChr   = "";

	for(i=0; i<PRCE_LEN ;i++) {

		vFrstChr = vPriceTmp.substring(i,i+1);

		if('0' <= vFrstChr && '9' >= vFrstChr) {
			vPrice = vPrice.concat(vFrstChr);
		}
	}

	PRCE_LEN   = vPrice.length;                // Parameter로 받은 값의 길이

	for(i=1; i<=PRCE_LEN ;i++) {

		var EXPR = (vPrice.substring(PRCE_LEN-i,PRCE_LEN)).substring(0,1);

		switch(EXPR) {
			case '1':
				vTmpDanWee = "일";
				break;
			case '2':
				vTmpDanWee = "이";
				break;
			case '3':
				vTmpDanWee = "삼";
				break;
			case '4':
				vTmpDanWee = "사";
				break;
			case '5':
				vTmpDanWee = "오";
				break;
			case '6':
				vTmpDanWee = "육";
				break;
			case '7':
				vTmpDanWee = "칠";
				break;
			case '8':
				vTmpDanWee = "팔";
				break;
			case '9':
				vTmpDanWee = "구";
				break;
			case '0':
				continue;
			default:
				continue;
		}

		if(i==1) {
			vPriceAMT = vTmpDanWee;
		} else {
			switch((i-1)%4) {
				case 1:
					vTmpDanWee = vTmpDanWee.concat("십");
					break;
				case 2:
					vTmpDanWee = vTmpDanWee.concat("백");
					break;
				case 3:
					vTmpDanWee = vTmpDanWee.concat("천");
					break;
				case 0:
				default:
					break;
			}

			if( i>4 && i<9 && vFlag!='M') {
				vTmpDanWee = vTmpDanWee.concat("만");
				vFlag = 'M';
			}

			if( i>8 && i<13 && vFlag!='U') {
				vTmpDanWee = vTmpDanWee.concat("억");
				vFlag = 'U';
			}

			if( i>12 && vFlag!='J') {
				vTmpDanWee = vTmpDanWee.concat("조");
				vFlag = 'J';
			}

			vPriceAMT = vTmpDanWee.concat(vPriceAMT);
		}

	}

	return vPriceAMT;
}



//==============================================================================
//Description  	: 수치를 지정한 자리에서 올림/반올림/버림 처리
//Parameter    	: pNumber - 처리할 수치
//						  pPoint  - 올림/반올림/버림 할 위치(2:10자리, 1:1자리, -1:소수점이하 첫째자리)
//						  pMode   - 1:올림, 0:반올림, -1:버림
//Return Value	: 정상처리시:처리한 값, 오류시:""
//==============================================================================
function fRound(pNumber, pPoint, pMode) {
	// 파라미터 값을 수치화 하여 변수에 저장
	var vNumber = eval(pNumber);

	// 소수점을 기준으로 숫자들만 취하여 배열 변수에 저장
	var vTempArray = eval(pNumber).toString().replace("-", "").split(".");

	// pNumber 가 float 형이 아니면
	if(!fCheckFloat(pNumber)) {
		// 메시지 처리후 리턴
		fMessage("WZZZZ0008", "파라미터", "2");
		return "";
	}

	// pPoint 가 float 형이 아니면
	if(!fCheckFloat(pPoint)) {
		// 메시지 처리후 리턴
		fMessage("WZZZZ0008", "파라미터", "2");
		return "";
	}

	// 소수점 앞에서 처리하려면
	if(0 < eval(pPoint)) {
		// 소수점 이상 자리수보다 크면
		if(vTempArray[0].length < eval(pPoint)) {
			// 메시지 처리후 리턴
			fMessage("WZZZZ0003", "올림/반올림/버림 할 위치", "2");

			return "";
		}
	// 소수점 뒤에서 처리하려면
	} else if(0 > eval(pPoint)) {
		// 소수점 이하값이 존재하지 않거나 자리수보다 크면
		if(vTempArray.length != 2 || vTempArray[1].length < eval(pPoint)*(-1)) {
			// 메시지 처리후 리턴
			//fAlertMessage("IZZZZ0003", "올림/반올림/버림 할 위치");
			//return "";

			return pNumber;
		}
	}

	// '올림'이고
	if(1 == eval(pMode)) {
		// 소수점 앞에서 처리하려면
		if(0 < eval(pPoint)) {
			// 해당 자리(pPoint)에서 올림 처리
			vNumber = Math.ceil(vNumber / Math.pow(10, pPoint)) * Math.pow(10, pPoint);
			return vNumber;

		// 소수점 뒤에서 처리하려면
		} else if(0 > eval(pPoint)) {
			// 해당 자리(pPoint)에서 올림 처리
			vNumber = Math.ceil(vNumber * Math.pow(10, pPoint*(-1)-1)) / Math.pow(10, pPoint*(-1)-1);

			return vNumber;
		} else {
			fMessage("WZZZZ0008", "올림자리", "2");
			return "";
		}

	// '반올림'이고
	} else if(0 == eval(pMode)) {
		// 소수점 앞에서 처리하려면
		if(0 < eval(pPoint)) {
			// 해당 자리(pPoint)에서 반올림 처리
			vNumber = Math.round(vNumber / Math.pow(10, pPoint)) * Math.pow(10, pPoint);
			return vNumber;

		// 소수점 뒤에서 처리하려면
		} else if(0 > eval(pPoint)) {
			// 해당 자리(pPoint)에서 반올림 처리
			vNumber = Math.round(vNumber * Math.pow(10, pPoint*(-1)-1)) / Math.pow(10, pPoint*(-1)-1);
			return vNumber;

		} else {
			fMessage("WZZZZ0008", "올림자리", "2");
			return "";
		}

	// '버림'이고
	} else if(-1 == eval(pMode)) {
		// 소수점 앞에서 처리하려면
		if(0 < eval(pPoint)) {
			// 해당 자리(pPoint)에서 내림 처리
			vNumber = Math.floor(vNumber / Math.pow(10, pPoint)) * Math.pow(10, pPoint);
			return vNumber;

		// 소수점 뒤에서 처리하려면
		} else if(0 > eval(pPoint)) {
			// 해당 자리(pPoint)에서 내림 처리
			vNumber = Math.floor(vNumber * Math.pow(10, pPoint*(-1)-1)) / Math.pow(10, pPoint*(-1)-1);
			return vNumber;
		} else {
			fMessage("WZZZZ0008", "올림자리", "2");
			return "";
		}

	// 모두 아니면
	} else {
		// 메시지 처리후 리턴
		fMessage("WZZZZ0003", "모드('1'/'0'/'-1')", "2");
		return "";
	}
}



//==============================================================================
//Description  	: 날짜 기간값 유효성 체크
//Parameter    	: pDateFr - 시작날짜 EMEdit ID
//						  pDateTo - 종료날짜 EMEdit ID
//						  pFlag - 필수항목여부(Y/N)
//Return Value	: true(값이 유효하지 않은 경우) / false
//==============================================================================
function fCheckEmEditDateTerm(pDateFr, pDateTo, pFlag) {

	// 날짜컬럼 유효성 체크
	if(fCheckEmEditDate(pDateFr, pFlag) || fCheckEmEditDate(pDateTo, pFlag)) return true;

	vDateFr = eval("document.all." + pDateFr);
	vDateTo = eval("document.all." + pDateTo);

	pDateFrText = vDateFr.Text;
	pDateToText = vDateTo.Text;

	// 시작날짜가 종료날짜보다 클 경우
	if(eval(pDateToText) - eval(pDateFrText) < 0) {

		//fAlertMessage("008", "날짜 기간");
		alert("시작일자가 종료일자보다 클 수 없습니다.");
		vDateFr.Focus();
		return true;
	}

	return false;
}



//==============================================================================
//Description  	: 날짜 유효성 체크
//Parameter    	: pDate - 날짜 EMEdit ID
//						  pFlag - 필수항목여부(Y/N)
//Return Value	: true(값이 유효하지 않은 경우) / false
//==============================================================================
function fCheckEmEditDate(pDate, pFlag) {

	var leng = 0;

	pDate = eval("document.all." + pDate);

	pText = pDate.Text;
	pFlag = fTrim(pFlag).toUpperCase();

	// 일자값 저장 배열
	var vDateArray = new Array(3);

	// 길이대로(년:4, 월:2, 일:2) 잘라서 배열에 저장
	vDateArray[0] = pText.substr(0,4);
	vDateArray[1] = fTrim(pText.substr(4,2));
	vDateArray[2] = fTrim(pText.substr(6,2));

	// 월값이 길이가 1 이면 앞에 "0" 을 붙인다
	if(vDateArray[1].length == 1 && vDateArray[1] != "0") {
		vDateArray[1] = "0" + vDateArray[1];
		pDate.Text = vDateArray[0] + vDateArray[1] + vDateArray[2];
	}

	// 일값이 길이가 1 이면 앞에 "0" 을 붙인다
	if(vDateArray[2].length == 1 && vDateArray[2] != "0") {
		vDateArray[2] = "0" + vDateArray[2];
		pDate.Text = vDateArray[0] + vDateArray[1] + vDateArray[2];
	}

	// 날짜컬럼이 필수일 경우
	if(pFlag == "Y" && (fTrim(pDate.Text) == "" || fTrim(pDate.Text) == null)) {
		fMessage("WZZZZ0001", "날짜", "2");
		pDate.Focus();
		return true;
	} else if (pFlag == "N" && (fTrim(pDate.Text) == "" || fTrim(pDate.Text) == null)) {
		return false;
	}

	// 날짜컬럼에 공백이 들어갈 경우
	if(pDate.Format == "YYYY-MM-DD") leng = 8;
	else if(pDate.Format == "YYYY-MM") leng = 6;
	else if(Date.Format == "YYYY") leng = 4;

	for(i=0; i < leng; i++) {

		if(isNaN(pDate.Text.charCodeAt(i))) {

			fMessage("WZZZZ0008", "날짜", "2");
			pDate.Focus();
			return true;
		}

		if(pDate.Text.charCodeAt(i) == 32) {

			fMessage("WZZZZ0008", "날짜", "2");
			pDate.Focus();
			return true;
		}
	}

	return false;
}



//==============================================================================
//Description  	: 스크롤글상자(textarea) 줄수 제한 입력하기
//Parameter    	: textname - document.all + textarea의 name
//						  i : 제한 줄수(제한수까지는 입력가능 다음줄부터 입력X)
//Return Value	: True / False
//
//Ex)body단에 onKeypress="fTextareaCheck(document.all.view2, '5');" 식으로 사용가능
//==============================================================================
function fTextareaCheck(txaname, i) {

	var newheight = txaname.scrollHeight;
	var row = (newheight - 2) / 15;

	row = parseInt(row,10);
	if(row > i) {
		if(event.keyCode==13) {
			alert(i+1 + "줄 이상은 입력 하실 수 없습니다.");
			txaname.blur();
			return false;
		}
		return false;
	}
}


//==============================================================================
//Description  	: 문자열의 Byte 크기가 제한값을 벗어나는지 체크 (벗어나면 false 리턴)
//Parameter    	: pString    - 문자열
//						  pCheckSize - 제한크기
//Return Value	: True / False
//==============================================================================
function fCheckByteSize(pString, pCheckSize) {
	if(fGetByteSize(pString) <= eval(pCheckSize)) return true;
	return false;
}


//==============================================================================
//Description  	: 값이 없는지 체크
//Parameter    	: pString - 체크할 문자열
//						  pElementName - 해당 객체명
//Return Value	: True / False

//fCheckEmpty('', document.all.text) 식으로 사용
//==============================================================================
function fCheckEmpty(pString, pElementName) {

	if(fTrim(pString) == "") {
		if("undefined" != typeof(pElementName)) fMessage("WZZZZ0001", pElementName, "2");
		return false;
	}

	return true;   // 공백이 아니라면
}


//==============================================================================
//Description  	: 파라미터 값이 Float Type인지를 체크
//Parameter    	: pValue - 파라미터 값
//Return Value	: True / False
//==============================================================================
function fCheckFloat(pValue) {
	// 파라미터 값이 parseFloat()후에도 같으면 TRUE 리턴
	if(pValue == parseFloat(pValue)) return true;
	else return false;
}



//==============================================================================
//Description  	: 파라미터 값이 정수인지를 체크
//Parameter    	: pValue - 파라미터 값
//Return Value	: True / False
//==============================================================================
function fCheckInteger(pValue) {
	// 값이 없으면 FALSE 리턴
	if(typeof(pValue) == "undefined") return false;
	if(pValue.length == 0) return false;

	// 문자열화시켜 변수에 저장
	var vValue = pValue.toString();

	// 첫번째 문자가 "-" 이면 제거
	if(vValue.substring(0, 1) == "-") {
		vValue = vValue.substring(1, vValue.length);
	}

	// 값이 0 이 아니면
	if(vValue != 0) {
		// 문자열 길이만큼 loop
		for(var i=0; i<vValue.length; i++) {
			// 숫자가 아니면 FALSE 리턴
			if(isNaN(vValue.substring(i, i+1))) return false;
		}
	}

	// 이상 없으므로 TRUE 리턴
	return true;
}


//==============================================================================
//Description  	: "20020101" 형태의 일자값을 "2002-01-01" 형태로 리턴
//Parameter    	: pDate - "20020101" 형태의 일자
//Return Value	: vDate - "2002-01-01" 형태의 일자값
//==============================================================================
function fCompleteDateFormat(pDate) {
	var vDate;
	vDate = fTrim(pDate);

	// 일자 체크 결과가 false 이면 리턴
	if(fCheckDate(vDate)) {
		vDate = vDate.substring(0,4) + "-" + vDate.substring(4,6) + "-" + vDate.substring(6,8)
	}
	else return "";

	return vDate;
}



//==============================================================================
//Description  	: 파라미터로 받은 금액을 수치형태(',' 제거)로 변환
//Parameter    	: pAmount - 금액
//Return Value	: vDate - 수치 형태로 변환한 값 or ""
//==============================================================================
function fConvertAmountToNumber(pAmount) {
	return fReplaceWord(pAmount, ",", "");
}


//==============================================================================
//Description  	: 파라미터로 받은 수치를 금액 형태(',' 삽입)로 변환
//Parameter    	: pAmount - 금액
//Return Value	: vDate - 수치 형태로 변환한 값 or ""
//==============================================================================
function fConvertNumberToAmount(pNumber) {
	var vNumber;
	var vAddPoint = 0;
	var vAmount = "";
	var vTempArray;

	// 정상적인 float 값이면
	if(fCheckFloat(pNumber)) {
		// 문자열화시켜 변수에 저장
		vNumber = pNumber.toString();

		// 첫번째 문자로 '-' 가 있으면 따로 떼어서 저장
		if(vNumber.substring(0, 1) == "-") {
			vAmount = "-";
			vNumber = vNumber.substring(1, pNumber.length);
		}

		// '.' 을 구분자로 나누어 배열 변수에 저장
		vTempArray = vNumber.split(".");

		// 자연수값의 길이가 3 보다 크면
		if(vTempArray[0].length > 3) {
			// ',' 를 붙일 위치 설정
			if(vTempArray[0].length % 3 == 0) vAddPoint = 3;
			else vAddPoint = vTempArray[0].length % 3;
		}

		// 자연수값의 길이만큼 loop
		for(var i=0; i<vTempArray[0].length; i++) {
			// 한글자씩 리턴값에 추가
			vAmount += vTempArray[0].substring(i, i + 1);

			// i 값이 ',' 를 붙일 위치에 도달하면
			if(i == vAddPoint - 1 && i != vTempArray[0].length - 1) {
				// ',' 문자를 붙이고
				vAmount += ",";

				// ',' 를 붙일 위치 재설정
				vAddPoint = eval(vAddPoint) + 3;
			}
		}

		// 소수점 이하값도 있었다면 리턴값에 추가
		if(vTempArray.length == 2) vAmount += "." + vTempArray[1];

	// 정상적인 float 값이 아니면
	} else {
		// 오류 메시지 처리
		fMessage("WZZZZ0008", "파라미터", "2");
	}

	return vAmount;
}



//==============================================================================
//Description  	: 파라미터 값의 Byte 크기를 리턴
//Parameter    	: pValue - 파라미터 값
//Return Value	: vByteSize - 파라미터 값의 Byte 크기
//==============================================================================
function fGetByteSize(pValue) {

	// Byte 수를 저장할 변수
	var vByteSize = 0;

	// Value 값의 길이만큼 loop
	for(var i=0; i<pValue.length; i++) {
		//한글이 들어오면 255보다 크다
		if(pValue.charCodeAt(i) > 255) vByteSize += 2;
		else vByteSize += 1;
	}
	return vByteSize;
}



//==============================================================================
//Description  	: 문자열 앞뒤에있는 공백 제거
//Parameter    	: pTargetString - 대상 문자열
//Return Value	: pTargetString - 공백을 제거한 결과 문자열
//==============================================================================
function fTrim(pTargetString) {

	var vStartPoint = 0;									// subString 하기 위한 시작 포인트
	var vEndPoint = pTargetString.length;		// subString 하기 위한 끝 포인트

	//문자열앞에 공백문자가 들어 있는 Index 추출
	while( (vStartPoint < vEndPoint) && (pTargetString.charCodeAt(vStartPoint) == 32) )   {
		vStartPoint++;
	}

	//문자열뒤에 공백문자가 들어 있는 Index 추출
	while( (vStartPoint < vEndPoint) && (pTargetString.charCodeAt(vEndPoint-1) == 32) )   {
		vEndPoint--;
	}

	// 공백을 제거했으면 subString하여 결과문자열을 리턴하고 제거한 내용이 없으면 그대로 리턴
	return ( (vStartPoint > 0) || (vEndPoint < pTargetString.length) ) ? pTargetString.substring(vStartPoint, vEndPoint) : pTargetString;
}



//==============================================================================
//Description  	: 성명난에 입력된 파라미터가 한글인지 Check
//Parameter    	: pHan - 대상 문자열
//Return Value	: True / False
//==============================================================================
function fCheckHan(pHan) {

	if(pHan.value == ""){
		fMessage("WZZZZ0001", "", "2");
		pHan.focus();
		return false;
	}

	for(i=0;i<pHan.value.length;i++) {
		var a=pHan.value.charCodeAt(i);
		if (a < 128) {
			fMessage("WZZZZ0010", "한글", "2");
			pHan.value="";
			pHan.focus();
			return false;
		}
	}
	return true;
}



//==============================================================================
//Description  	: 소숫점 자리수 체크
//Parameter    	: iptid => 입력상자 아이디
//						  isize => 정수 자리수 사이즈
//						  idec  => 소숫점 이하 자리수 사이즈
//						  smsg1 => 정수 자리수 에러 메세지
//							예) smsg1 = "중량은 만단위까지"
//							==> 출력되는 에러 메세지내용 : "중량은 만단위까지만 입력이 가능합니다."
//						  smsg2 => 소숫점 이하 자리수 에러 메세지
//							예) smsg2 = "중량은 소숫점 3자리까지"
//							==> 출력되는 에러 메세지내용 : "중량은 소숫점 3자리까지만 입력이 가능합니다."
//Return Value	: True  => 유효성에 위배될 경우 리턴
//						  False => 유효성에 맞을 경우 리턴
//==============================================================================
function fDecimalCheck(iptid, isize, idec, smsg1, smsg2) {

	iptid = eval("document.all." + iptid);
	isize = eval(isize);
	idec  = eval(idec);

	pFlag = false;

	if(iptid.value.indexOf(".") == -1) {

		if(iptid.value.length > isize) {
			fMessage("WZZZZ0010", smsg1, "2");
			iptid.focus();
			pFlag = true;
		}
	}else{

		pValue = iptid.value.split(".");

		if(pValue[0].length > isize) {
			fMessage("WZZZZ0010", smsg1, "2");
			iptid.focus();
			pFlag = true;
		}

		if(pValue[1].length > idec) {
			fMessage("WZZZZ0010", smsg2, "2");
			iptid.focus();
			pFlag = true;
		}
	}

	return pFlag;
}


//==============================================================================
//Description  	: 소숫점 자리수 체크(Tab 화면용)
//Parameter    	: iptid => 입력상자 아이디
//						  tabnm  => Tab 아이디
//						  vindex => Tab 인덱스
//						  isize => 정수 자리수 사이즈
//						  idec  => 소숫점 이하 자리수 사이즈
//						  smsg1 => 정수 자리수 에러 메세지
//							예) smsg1 = "중량은 만단위까지"
//							==> 출력되는 에러 메세지내용 : "중량은 만단위까지만 입력이 가능합니다."
//						  smsg2 => 소숫점 이하 자리수 에러 메세지
//							예) smsg2 = "중량은 소숫점 3자리까지"
//							==> 출력되는 에러 메세지내용 : "중량은 소숫점 3자리까지만 입력이 가능합니다."
//Return Value	: True  => 유효성에 위배될 경우 리턴
//						  False => 유효성에 맞을 경우 리턴
//==============================================================================
function fDecimalCheckTab(iptid, tabid, vindex, isize, idec, smsg1, smsg2) {

	iptid = eval("document.all." + iptid);
	tabid = eval("document.all." + tabid);
	isize = eval(isize);
	idec  = eval(idec);

	pFlag = false;

	if(iptid.value.indexOf(".") == -1) {

		if(iptid.value.length > isize) {
			fMessage("WZZZZ0010", smsg1, "2");
			tabid.ActiveIndex = vindex;
			iptid.focus();
			pFlag = true;
		}

    }else{

		pValue = iptid.value.split(".");

		if(pValue[0].length > isize) {
			fMessage("WZZZZ0010", smsg1, "2");
			tabid.ActiveIndex = vindex;
			iptid.focus();
			pFlag = true;
		}

		if(pValue[1].length > idec) {
			fMessage("WZZZZ0010", smsg2, "2");
			tabid.ActiveIndex = vindex;
			iptid.focus();
			pFlag = true;
		}
	}

	return pFlag;
}



//==============================================================================
//Description  	: 소숫점의 갯수 체크
//Parameter    	: iptid => 입력상자 아이디
//Return Value	: True  => 유효성에 위배될 경우 리턴
//						  False => 유효성에 맞을 경우 리턴
//==============================================================================
function fDecimalNumCheck(iptid) {

	iptid    = eval("document.all." + iptid);
	iptvalue = iptid.value;
	pCount   = 0;
	pFlag    = false;

	for (var i=0 ; i < iptvalue.length ; i++) {

		subvalue = iptvalue.substring(i,i+1);

		if (subvalue == ".") pCount = pCount+1;

		if (pCount > 1){
//			fAlertMessage("IZZZZ0225","");
			alert("소수점은 한개만 입력이 가능합니다.");
			iptid.focus();
			pFlag = true;
        }
    }

    return pFlag;
}



//==============================================================================
//Description  	: 소숫점의 갯수 체크(Tab 화면용)
//Parameter    	: iptid => 입력상자 아이디
//						  tabnm => Tab 아이디
//						  vindex => Tab 인덱스
//Return Value	: True  => 유효성에 위배될 경우 리턴
//						  False => 유효성에 맞을 경우 리턴
//==============================================================================
function fDecimalNumCheckTab(iptid,tabid,vindex) {

	iptid    = eval("document.all." + iptid);
	tabid   = eval("document.all." + tabid);
	iptvalue = iptid.value;
	pCount   = 0;
	pFlag    = false;

	for (var i=0 ; i < iptvalue.length ; i++) {

		subvalue = iptvalue.substring(i,i+1);

		if (subvalue == ".") pCount = pCount+1;

		if (pCount > 1){
//    		fAlertMessage("IZZZZ0225","");
			alert("소수점은 한개만 입력이 가능합니다.");
			tabid.ActiveIndex = vindex;
			iptid.focus();
			pFlag = true;
		}
	}

	return pFlag;
}



//==============================================================================
//Description  	: 숫자 및 돗트(46번)만 입력 가능하도록 체크
//Parameter    	: NULL
//Return Value	: True  => 입력하는 키가 숫자 및 돗트 일 경우
//						  False => 입력하는 키가 문자일 경우
//==============================================================================
function fNumberKeyCheck() {

	var keyValue = event.keyCode;

    if (((keyValue >= 48) && (keyValue <= 57)) || keyValue==8 || keyValue==190 || keyValue==46 || (keyValue >= 37) && (keyValue <= 40)){

		return true;

    } else {

		return false;
	}
}



//==============================================================================
//Description  	: 숫자만 입력 가능
//Parameter    	: NULL
//Return Value	: True  => 입력하는 키가 숫자일 경우
//						  False => 입력하는 키가 문자일 경우
//==============================================================================
function fOnlyNumberKey() {

	var keyValue = event.keyCode;

	if (((keyValue >= 48) && (keyValue <= 57)) || ((keyValue >= 96) && (keyValue <= 105)) || keyValue==8 || keyValue==9 || keyValue==46 || (keyValue >= 37) && (keyValue <= 40)) {
	//if ((keyValue >= 48) && (keyValue <= 57)) return true;  --> 숫자만
		return true;

	} else {
		return false;
	}
}



//==============================================================================
//Description  	: 소문자를 대문자로 전환
//Parameter    	: 입력받은 문자
//Return Value	: 전환된 대문자
//==============================================================================
function fToUpper(inValue) {

	inValue.value = inValue.value.toUpperCase();

}


//==============================================================================
//Description  	: 대문자를 소문자로 전환
//Parameter    	: 입력받은 문자
//Return Value	: 전환된 소문자
//==============================================================================
function fToLower(inValue) {

	inValue.value = inValue.value.toLowerCase();

}



//==============================================================================
//Description  	: 삭제 컨펌 메세지 호출하고 리턴
//Parameter    	: 메세지
//Return Value	: yes --> True
//						  no   --> False
//==============================================================================
function fConfirmMessage(pAttachMessage) {
	var bflag;
	var vAlertMessage;
	vAlertMessage = pAttachMessage + " 하시겠습니까?";
	bflag=confirm(vAlertMessage);

	return bflag;
}


//==============================================================================
//Description  	: 자리수만큼 앞자리 채우기
//Parameter    	: 입력받은 문자, 총길이, 채울문자
//Return Value	: result - 전환된 문자
//==============================================================================
function fLpad(str, len, pad){
	var result = fTrim(str);

	var templen = len - result.length;

	for (var i = 0; i < templen; i++) {
		result = pad + result;
	}

	return result;
}



//==============================================================================
//Description  	: 자리수만큼 뒷자리 채우기
//Parameter    	: 입력받은 문자, 총길이, 채울문자
//Return Value	: result - 전환된 문자
//==============================================================================
function fRpad(str, len, pad){
	var result = fTrim(str);

	var templen = len - result.length;

	for (var i = 0; i < templen; i++) {
        result = result + pad;
	}

	return result;
}



//==============================================================================
//Description  	: 컴머가 들어었는 값 컴머 없애고 정보 붙여주기
//Parameter    	: 입력받은 스트링
//Return Value	: vReturnString - 전환된 스트링
//==============================================================================
function fSetComma(pSourceString) {
	var vTempArray;				// 찾을 단어를 구분자로 분리한 문자열을 저장할 배열 변수
	var nCmr;
	var vNumArray = new Array();

	var vReturnString = "";
	var vReturnString1 = "";

	vTempArray = pSourceString.split(",");

	for(var i=0; i<vTempArray.length-1; i++) 	{
		vReturnString += vTempArray[i] + "";
		vNumArray[i]=vTempArray[i].length;
	}

	nCmr = vTempArray.length-1;
	vReturnString += vTempArray[vTempArray.length-1];
	vNumArray[vTempArray.length-1]=vTempArray[vTempArray.length-1].length;
	if(nCmr > 9  && nCmr<100){
		vReturnString1 += nCmr;
	}else{
		vReturnString1 += (nCmr+" ");
	}

	for(var i=0; i<=nCmr;i++) {
		if(vNumArray[i] > 9  && vNumArray[i]<100){
			vReturnString1 += vNumArray[i];
		} else {
			vReturnString1 += (vNumArray[i]+" ");
		}
	}

	vReturnString = vReturnString1 + vReturnString;

	return vReturnString;
}


//==============================================================================
//Description  	: 숫자타입 데이터를 콤마가 추가된 string형으로 반환
//Parameter    	: 전환된 스트링
//Return Value	: s - 복원된 스트링
//==============================================================================
function fCNum(tx){    
	var str = String(tx);     
	if ((str == "") || (str == null))
   {
	   return "0";
   }
   var sMoney = str.replace(/,/g,"");

   sMoney = parseFloat(sMoney).toString();
   var tMoney="";
   var i;
   var tLen =sMoney.length;
   var cnt = 0;
   var sNumber = ""; // 정수부
   var sDecimal = ""; // 소수부
   var sStartPoint = "false";

   var iNumber = 0; //정수부자리수
   var iDecimal = 0; //소수부자리수

   for (i=0;i<tLen ;i++)
   {
		if (sMoney.charAt(i) == ".") {
			sStartPoint = "true";
		}

		if (sStartPoint == "true") // 소수부
		{
			if (sMoney.charAt(i) !=".")
			{
		 	   sDecimal += sMoney.charAt(i);
			}

		} else if (sStartPoint == "false")
	   {
			sNumber += sMoney.charAt(i);
	   }
   }

   if (sStartPoint == "true")
   {
       sDecimal =sDecimal.replace(/\./g,"");
	   sDecimal = "." + sDecimal;
   }

  // 정수부에 대한 값의 길이
  tLen = sNumber.length;
  // 정수부의 자리수가 3보다 작거나 같으면 정수부 + 소수부 리턴.
  if (tLen > 3 ) { 
	  var j=1;
	  for(i=tLen;i>0;i--){
		  tMoney = sNumber.charAt(i-1) + tMoney;
		  if (((j % 3) == 0) && (i !=1))
		  {
			  tMoney = "," + tMoney;
		  }
		  j= j+1;
	  }
  } else {
	  tMoney = sNumber;
  }
  
  str = tMoney + sDecimal;
  return str;
}

//==============================================================================
//Description  	: 데이터를 콤마가 제거된 string형으로 반환
//Parameter    	: 전환된 스트링
//Return Value	: s - 복원된 스트링
//==============================================================================
function removeComma(tx) {
  return tx.replace(/,/gi,"");
}
	

//==============================================================================
//Description  	: Set함수로 전환된 원데이터로 스트링을 되돌려줌
//Parameter    	: 전환된 스트링
//Return Value	: sReturnString - 복원된 스트링
//==============================================================================
function fGetComma(sSourceString) {

	var sTargetString ="";
	var sReturnString ="";
	var nComma;
	var k = 0;
	var tmpN = new Array();

	nComma = parseInt((fTrim(sSourceString.substring(0,2))));
	k = 2;

	for(var i=2;i<=nComma*2+2;i=i+2){
		tmpN[k-2] = parseInt(fTrim(sSourceString.substring(i,i+2)));
		k++;
	}

	sTargetString = sSourceString.substring(2*(nComma)+4);

	if (nComma ==0) {
		return sTargetString;
	} else {
		sReturnString += (sTargetString.substring(0,tmpN[0])+",");
	}

    k = 0;
	for(var i=1;i<nComma;i++){
		k = k+tmpN[i-1];
		sReturnString += (sTargetString.substring(k,k+tmpN[i])+",");
	}

	sReturnString += sTargetString.substring(k+tmpN[nComma-1]);

	return sReturnString;
}



//==============================================================================
//Description  	: 주민번호 check
//Parameter    	: 입력받은 스트링
//Return Value	: 정상 - True
//						  오류 - False
//==============================================================================
function fChkSocialNo(str) {

	var vTemp = str;
	var str_jumin1 = vTemp.substr(0,6);
	var str_jumin2 = vTemp.substr(6,7);
	var i3 = 0;

	for (var i=0;i<str_jumin1.length;i++) {
		var ch1 = str_jumin1.substring(i,i+1);
		if (ch1<'0' || ch1>'9') { i3=i3+1 }
	}

	if ((str_jumin1 == '') || ( i3 != 0 )) {
		return false;
	}

	var i4 = 0;
	for (var i=0;i<str_jumin2.length;i++) {
		var ch1 = str_jumin2.substring(i,i+1);
		if (ch1<'0' || ch1>'9') { i4=i4+1 }
	}

	if ((str_jumin2 == '') || ( i4 != 0 )) {
		return false;
	}

	if(str_jumin2.substring(0,1) > 4) {
		return false;
	}

	if ((str_jumin1.length > 7) || (str_jumin2.length > 8)) {
		return false;
	}

	if ((str_jumin1 == '72') || ( str_jumin2 == '18')) {
		return false;
	}

	var f1=str_jumin1.substring(0,1)
	var f2=str_jumin1.substring(1,2)
	var f3=str_jumin1.substring(2,3)
	var f4=str_jumin1.substring(3,4)
	var f5=str_jumin1.substring(4,5)
	var f6=str_jumin1.substring(5,6)
	var hap=f1*2+f2*3+f3*4+f4*5+f5*6+f6*7
	var l1=str_jumin2.substring(0,1)
	var l2=str_jumin2.substring(1,2)
	var l3=str_jumin2.substring(2,3)
	var l4=str_jumin2.substring(3,4)
	var l5=str_jumin2.substring(4,5)
	var l6=str_jumin2.substring(5,6)
	var l7=str_jumin2.substring(6,7)
	hap=hap+l1*8+l2*9+l3*2+l4*3+l5*4+l6*5
	hap=hap%11
	hap=11-hap
	hap=hap%10
	if (hap != l7) {
		return false;
	}
	return true;
}



//==============================================================================
//Description  	: 컬럼ID에 의한 그리드 데이터 정렬
//Parameter    	: dtsGrdID - 그리드 데이터셋 아이디
//						  row - 선택한 Row Index
//						  colid - 선택한 컬럼 아이디
//Return Value	: NULL
//==============================================================================
function GridSort(dtsGrdID, row, colid) {

	if(row > 0) return;

	dtsGrdID = eval(dtsGrdID);

	if (vSort == "T") {                      // T : Ascending(+)
		vSort = "F";
		dtsGrdID.SortExpr = "+" + colid;
		dtsGrdID.Sort();

	} else if (vSort == "F") {                // F : Descending(-)
		vSort = "T";
		dtsGrdID.SortExpr = "-" + colid;
		dtsGrdID.Sort();
	}
}



//==============================================================================
//Description  	: 이미지 변경
//Parameter    	: pImgObj - 이미지 객체
//Return Value	: NULL
//==============================================================================
function fRollOver(pImgObj) {

	var vImgObj = pImgObj;
	var vImgSrc = (pImgObj.src.indexOf("_na.gif") >= 0 )? pImgObj.src.replace("_na.gif", ".gif"):pImgObj.src.replace(".gif", "_na.gif");

	vImgObj.src = vImgSrc;
}


//==============================================================================
//Description  	: left frame 에 선언한 변수들 Get
//Parameter    	: NULL
//Return Value	: NULL
//==============================================================================

// 잠정 폐쇄 - 현재년월일을 hid.htm의 vToday에 set
//function fSetToday() {
//	var vObject = fGetHidFrm();
//	vObject.vToday = fGetDateClient('1');
//}

//left frame에 선언한 vToday
function fGetToday() {
	//return fGetTime(2);

	var ls_date  = new Date();
	var ls_year  = ls_date.getYear();
	var ls_month = (ls_date.getMonth())+1;
	var ls_day   = ls_date.getDate();

	/* 구한 날짜의 달과 일이 1자리수 이면 2자리로 만든다 */
	if(ls_month < 10) ls_month = "0"+ls_month;
	if(ls_day < 10)   ls_day   = "0"+ls_day;

	return ls_year + "" + ls_month + "" + ls_day;
}

function fGetThisYear() {
	//return fGetTime(2);

	var ls_date  = new Date();
	var ls_year  = ls_date.getYear();

	return ls_year + "0101";
}

function fGetNextYear() {
	//return fGetTime(2);

	var ls_date  = new Date();
	var ls_year  = ls_date.getYear()+1;

	return ls_year + "0101";
}

//left frame에 선언한 vUsrId
function fGetUsrId() {
	var vObject = fGetForMain();
	return vObject.top.left.vUserId;
}

//left frame에 선언한 vUsrNm
function fGetUsrNm() {
	var vObject = fGetForMain();
	return vObject.top.left.vUserNm;
}

//left frame에 선언한 pDeptCd
function fGetDeptCd() {
	var vObject = fGetForMain();
	return vObject.top.left.vWkDptCd;
}

//left frame에 선언한 pDeptNm
function fGetDeptNm() {
	var vObject = fGetForMain();
	return vObject.top.left.vWkDptNm;
}

//left frame에 선언한 vSsn
function fGetSsn() {
	var vObject = fGetForMain();
	return vObject.top.left.vSsn;
}

//left frame에 선언한 vOrgCd
function fGetOrgCd() {
	var vObject = fGetForMain();
	var vOrgCd = vObject.top.left.vOrgCd;

	vOrgCd = vOrgCd.substring(vOrgCd.length-7);
	return vOrgCd;
}

//left frame에 선언한 vOrgNm
function fGetOrgNm() {
	var vObject = fGetForMain();
	return vObject.top.left.vOrgNm;
}

//left frame에 선언한 vOffcRnk
function fGetOffcRnk() {
	var vObject = fGetForMain();
	return vObject.top.left.vOffcRnk;
}

//left frame에 선언한 vOffcGrd
function fGetOffcGrd() {
	var vObject = fGetForMain();
	return vObject.top.left.vOffcGrd;
}

//left frame에 선언한 vOffcGrdNm
function fGetOffcGrdNm() {
	var vObject = fGetForMain();
	return vObject.top.left.vOffcGrdNm;
}

//left frame에 선언한 vEmail
function fGetEmail() {
	var vObject = fGetForMain();
	return vObject.top.left.vEmail;
}

//left frame에 선언한 vCoWkGnCd
function fGetCoWkGnCd() {
	var vObject = fGetForMain();
	return vObject.top.left.vCoWkGnCd;
}

//left frame에 선언한 vExt
function fGetExt1() {
	var vObject = fGetForMain();
	return vObject.top.left.vExt1;
}

//left frame에 저장된 사용자 세션 정보 전체 Get
function fGetAll() {
	var vObject = fGetForMain();
	var vRet = vObject.top.left.vUserId+","+vObject.top.left.vUserNm+","+vObject.top.left.vSsn+","+vObject.top.left.vOrgCd+","+vObject.top.left.vOrgNm+",";
	vRet = vRet + vObject.top.left.vOffcRnk+","+vObject.top.left.vOffcGrd+","+vObject.top.left.vOffcGrdNm+","+vObject.top.left.vEmail+",";
	vRet = vRet + vObject.top.left.vWkDptCd+","+vObject.top.left.vWkDptNm+","+vObject.top.left.vCoWkGnCd;
	return vRet;
}

//left frame에 저장된 메뉴 정보 전체 Get
// 배열로 구성  vMenu[0~max][0~4] => id(0), name(1), PMS(2), URL(3), Gubun(4)
function fGetMenu() {
	var vObject = fGetForMain();
	return vObject.top.left.vMenu;
}



//조회, 저장, 삭제, 인쇄의 권한여부
function fChkRole(arg) {

	var vRoleValue = fGetRoleValue();

	// 신규("C"), 조회("R"), 저장("S"), 삭제("D"), 인쇄("P"), EXL("E")
	if ((arg == "R") && (vRoleValue.charAt(0) == "1")) return true;
	else if ((arg == "S") && (vRoleValue.charAt(1) == "1")) return true;
	else if ((arg == "D") && (vRoleValue.charAt(2) == "1")) return true;
	else if ((arg == "P") && (vRoleValue.charAt(3) == "1")) return true;
	else if ((arg == "E") && (vRoleValue.charAt(4) == "1")) return true;
	else if ((arg == "C") && (vRoleValue.charAt(5) == "1")) return true;

	return false;
}



//==============================================================================
//Description  	: \n-><BR>, " " -> "&nbsp;" 변경
//Parameter    	: pAmount
//Return Value	: 수치 형태로 변환한 \n\r or <BR>
//						  수치 형태로 변환한 " " or &nbsp;
//==============================================================================
function fConvertComplete1(pAmount) {
	var sParmVal = pAmount;
	sParmVal =  fReplaceWord(sParmVal, "\n", "<BR>");
	sParmVal =  fReplaceWord(sParmVal, " ", "&nbsp;");

	return sParmVal;
}


//==============================================================================
//Description  	: <BR>->\n, "&nbsp;"->" " 변경
//Parameter    	: pAmount
//Return Value	: 수치 형태로 변환한 <BR> or \n\r
//						  수치 형태로 변환한 &nbsp; or " "
//==============================================================================
function fConvertComplete2(pAmount) {
	var sParmVal = pAmount;
	sParmVal =  fReplaceWord(sParmVal, "<BR>", "\n");
	sParmVal =  fReplaceWord(sParmVal, "&nbsp;", " ");

	return sParmVal;
}


//==============================================================================
//Description	: Form의 Text필드를 클리어
//Parameter		: NULL
//Return Value	: NULL
//==============================================================================
function clearFormText() {

	var obj = document.all;
	var formlen = document.forms.length;
	var oText = new Array();
	var inputlen = new Array();

	for (i = 0; i < formlen; ++i) {
		inputlen[i] = document.forms[i].length;
	}

	for (i = 0; i < formlen; ++i) {
		for (j = 0; j < inputlen[i]; ++j) {
			if (document.forms[i].elements[j].type == "text") {
				document.forms[i].elements[j].value = "";
			}
		}
	}

}



//==============================================================================
//Description	: 그리드의 데이터 유효성 체크
//Parameter		: dtsid => 데이터셋 아이디
//			              grdid => 그리드 아이디
//						  colid => 컬럼 아이디
//Return Value	: NULL
//==============================================================================
function fGridDataCheck(dtsid, grdid, colid) {

    dtsid = eval(dtsid);
    grdid = eval("document.all." + grdid);

    // 컬럼 속성이 Not Null 속성 일 경우
    if(dtsid.ErrorCode == "50018") {
        fMessage("WZZZZ0001", grdid.ColumnProp(colid, 'Name'), "2");
    }

    // 컬럼 속성이 Key 속성 일 경우
    if(dtsid.ErrorCode == "50019") {

        // Key값이 중복일 경우에는 해당 colid가 넘어오지 않음
        if(grdid.ColumnProp(dtsid.KeyID(dtsid.CountKey), 'Name') == null) {
            fMessage("WZZZZ0112", "Key", "2");
        }else{
            if(grdid.ColumnProp(dtsid.KeyID(dtsid.CountKey), 'Name') == "...") {
            	alert("부품번호, 부품상태, 창고, 위치가 중복된 데이터가 존재합니다.");
            }else{
                fMessage("WZZZZ0112", grdid.ColumnProp(dtsid.KeyID(dtsid.CountKey), 'Name'), "2");
            }
        }
    }

    // 에러난 곳에 포커스 설정
    dtsid.RowPosition;
    grdid.SetColumn(colid);
    grdid.focus();
}



//==============================================================================
//Description	: Tab안에 있는 그리드의 데이터 유효성 체크
//Parameter		: dtsid => 데이터셋 아이디
//						  grdid => 그리드 아이디
//						  colid => 컬럼 아이디
//						  tabid => 탭 아이디
//						  tabidx => 탭 인덱스
//Return Value	: NULL
//==============================================================================
function fTabGridDataCheck(dtsid, grdid, colid, tabid, tabidx) {

    dtsid = eval(dtsid);
    grdid = eval("document.all." + grdid);
    tabid = eval("document.all." + tabid);

    // 컬럼 속성이 Not Null 속성 일 경우
    if(dtsid.ErrorCode == "50018") {
        fMessage("WZZZZ0001", grdid.ColumnProp(colid, 'Name'), "2");
    }

    // 컬럼 속성이 Key 속성 일 경우
    if(dtsid.ErrorCode == "50019") {

        // Key값이 중복일 경우에는 해당 colid가 넘어오지 않음
        if(grdid.ColumnProp(dtsid.KeyID(dtsid.CountKey), 'Name') == null)
            fMessage("WZZZZ0112", "Key", "2");
        else
            fMessage("WZZZZ0112", grdid.ColumnProp(dtsid.KeyID(dtsid.CountKey), 'Name'), "2");
    }

    // 에러난 곳에 포커스 설정
    tabid.ActiveIndex = tabidx;
    dtsid.RowPosition;
    grdid.SetColumn(colid);
    grdid.focus();

}

//==============================================================================
//Description	: 일자를 받아 요일을 리턴한다
//Parameter		: ls_arg - 일자(8자리)
//Return Value	: 해당일자의 요일
//==============================================================================
function fGetDate(ls_arg) {

	var ls_date;
	var ls_day;
	var ls_dateArray = new Array("일", "월", "화", "수","목", "금", "토");
	var ls_month;

	/* 월을 확인하여 -1을 한다.(0~11까지임) */
	if(ls_arg.substring(4,5) == "0") ls_month = parseInt(ls_arg.substring(5,6))-1;
	else ls_month = parseInt(ls_arg.substring(4,6))-1;

	ls_date = new Date(ls_arg.substring(0,4),ls_month,ls_arg.substring(6,8));
	ls_day = ls_date.getDay();

	return ls_dateArray[ls_day];
}


 //==============================================================================
//Description	: 이미지 팝업을 창을 구성하여 표시한다
//Parameter		: ls_imgUrl - 이미지 URL
//Return Value	: NULL
//
//이미지 팝업창에서 마우스를 클릭하면 해당 창이 닫힌다.
//==============================================================================

function fImgPopup(ls_imgUrl) {
	var textImg  = "<html><body leftmargin=0 rightmargin=0 topmargin=0 marginwidth=0 marginheight=0>";
	textImg     += "<table width=100% border=0 cellspacing=0 cellpadding=0 height=100%><tr><td>";
	textImg     += "<div align=center style='cursor: hand' onClick='parent.close();'><img id='imgViewSrc'></div>";
	textImg     += "</td></tr></table></body></html>";

	var imgOpen = new Image();

	imgOpen.src = ls_imgUrl;

	/* 이미지의 가로크기와 세로크기를 변수에 셋팅 */
	var li_width = imgOpen.width;
	var li_height= imgOpen.height;

	if(li_width  > 1004) li_width  = 1004;  //이미지의 가로크기가 1004가 넘을 경우 1004로 셋팅
	if(li_height > 700)  li_height = 700;   //이미지의 세로크기가 700이 넘을 경우 700로 셋팅

	winobject = window.open('','','toolbar=no, location=no, scrollbars=yes, width='+(li_width+20)+', height='+(li_height)+', top=0,left=0' );
	winobject.document.open();
	winobject.document.write(textImg);
	winobject.document.close();
	winobject.focus();
	winobject.imgViewSrc.src = imgOpen.src;
}


//==============================================================================
//Description	: maxLength만큼 입력하면 다음 오브젝트로 자동 이동
//Parameter		: preObj  - 현재 입력중인 오브젝트
//						  nextObj - 포커스를 이동할 오브젝트
//Return Value	: NULL
//==============================================================================
function fAutoFocus(preObj, nextObj) {
	if(nextObj.disabled) return;
	if(preObj.value.length == preObj.maxLength) {
		nextObj.focus();
		nextObj.select();
	}
}



//==============================================================================
//Description	: 스페이스를 제거한 문자열 반환
//Parameter		: str - 대상 문자열
//Return Value	: string - 결과 문자열
//==============================================================================
function fSpaceDel(str) {
	var strPos;

	while(true) {
		strPos = str.indexOf(" ", 0);
		if(strPos == -1) break;
		str = str.replace(" ","");
	}

	return str;
}



//==============================================================================
//Description	: 특정문자의 앞이나 뒤 문자열 반환
//Parameter		: sourceStr - 대상 문자열
//						  specialChar - 특정문자
//						  gubn - 1(앞), 2(뒤)
//Return Value	: string - 결과 문자열
//==============================================================================
function fStrCut(sourceStr, specialChar, gubn) {
	var strPos = sourceStr.search(specialChar);

	if(strPos == -1) return "";
	if(gubn == 1) return sourceStr.substring(0, strPos);
	else return sourceStr.substring(strPos+1, sourceStr.length);
}



//==============================================================================
//Description	: 날짜 From-To 체크
//Parameter		: fdate - 시작일자
//						  tdate - 종료일자
//Return Value	: True / False
//==============================================================================
function fDateTermCheck(fdate,tdate) {
	var Fyyyy  = fdate.substring(0,4);
	var Fmm    = fdate.substring(4,6);
	var Fdd    = fdate.substring(6,8);

	var Tyyyy  = tdate.substring(0,4);
	var Tmm    = tdate.substring(4,6);
	var Tdd    = tdate.substring(6,8);
	var datef  = Fyyyy+"/"+Fmm+"/"+Fdd;
	var datet  = Tyyyy+"/"+Tmm+"/"+Tdd;

	if (datef>datet) {
		return false;
	}

	return true;
}


//==============================================================================
//Description	: 기간 혹은 구간 등의 2개의 값을 받아 정합성 체크
//Parameter		: fromVal - 시작값
//						  toVal - 종료값
//Return Value	: True(시작값이 더 큰 경우) / False(종료값이 큰 경우)
//==============================================================================
function fFromToCheck(fromVal, toVal) {

	if(parseFloat(fromVal) > parseFloat(toVal)) return true;

	return false;
}


//==============================================================================
//Description	: 쿠키에 값을 셋팅한다.
//Parameter		: keyname - value를 셋팅할 keyname
//						  val - 셋팅할 value값
//Return Value	: NULL
//==============================================================================
function fSetCookie(keyname,val) {
	tmp  = keyname + "=" + escape(val) + ";";
	document.cookie = tmp;
}


//==============================================================================
//Description	: 쿠키에 셋팅된 값을 얻어온다.
//Parameter		: keyname - 값을 얻어올 키값
//Return Value	: keyname에 해당하는 쿠키 value
//==============================================================================
function fGetCookie(keyname) {
	tmp    = document.cookie +";";
	index1 = tmp.indexOf(keyname,0);

	if(index1 != -1) {
		tmp = tmp.substring(index1,tmp.length);
		index2 = tmp.indexOf("=",0) +1;
		index3 = tmp.indexOf(";",index2);

		return(unescape(tmp.substring(index2,index3)));
	}

	return("");
}


//==============================================================================
//Description	: 파일명에 들어 갈 수 없는 특수문자 제거
//Parameter		: ls_fileName - 파일명
//Return Value	: 특수문자를 제거한 String에 "_일자"를 추가하여 리턴
//
//파일명으로 사용할 수 없는 특수문자(  \ / : * ? " <> | )
//==============================================================================
function fDelSpecialChar(ls_fileName) {
	/* 오늘 날짜를 구한다 */
	var ls_date  = new Date();
	var ls_year  = ls_date.getYear();
	var ls_month = (ls_date.getMonth())+1;
	var ls_day   = ls_date.getDate();

	/* 구한 날짜의 달과 일이 1자리수 이면 2자리로 만든다 */
	if(ls_month < 10) ls_month = "0"+ls_month;
	if(ls_day < 10)   ls_day   = "0"+ls_day;

	var ls_char   = ""; //한문자를 임시로 담을 변수
	var ls_rtnStr = ""; //특수문자를 제거한 문자열을 담을 변수

	for(i=0; i<ls_fileName.length; i++) {
		ls_char = ls_fileName.charAt(i);

		if(ls_char == '/' ||
			ls_char == ':' ||
			ls_char == '*' ||
			ls_char == '?' ||
			ls_char == '"' ||
			ls_char == '<' ||
			ls_char == '>' ||
			ls_char == '|') continue;

		ls_rtnStr += ls_char;
	}

	return (ls_rtnStr + "_" + ls_year+ls_month+ls_day);
}


//==============================================================================
//Description	: 그리드의 데이타를 엑셀파일로 생성하는 기능
//Parameter		: objGrid   - 대상 그리드,
//						  titleStr  - 시트명, 타이틀, 서브타이틀, 일자,
//						  optionStr - 엑셀옵션(supress여부, hidden 컬럼 표시여부 셋팅)
//Return Value	: NULL
//==============================================================================
function fGridToExcel(objGrid, titleStr, optionStr) {
	var file_path  = "grid.xls"; 		//Default파일명을 셋팅한다.
	var lOption = 0;

	/* 시트명, 타이틀, 서브타이틀 셋팅 */
	if(titleStr != null && titleStr != "") titleValues = titleStr.split(",");
	if(titleValues.length >0) var sheet_name  = titleValues[0]; //시트명
	if(titleValues.length >1) var ls_title    = "value:"+titleValues[1]+"; font-face:'굴림'; font-size:30pt; font-color:black;font-bold; font-underline; bgcolor:white; align:center; line-color:red;line-width:2pt; skiprow:1;";
	if(titleValues.length >2) var ls_subTitle = "value:"+titleValues[2]+"; font-face:'굴림'; font-size:18pt; font-color:black; bgcolor:#99ffff; align:center; line-color:blue; line-width:1pt; skiprow:1;";

	if(sheet_name == "" || sheet_name == null) sheet_name="fms sheet";

	objGrid.SetExcelTitle(0, "");

	if(titleValues[2] != "" && titleValues[2] != null) {
		objGrid.SetExcelTitle(1, ls_title);
		file_path = fDelSpecialChar(titleValues[2]);  //파일명 셋팅(특수문자를 제거한)

	} else if(titleValues[1] != "" && titleValues[1] != null) {
		file_path = fDelSpecialChar(titleValues[1]);  //파일명 셋팅(특수문자를 제거한)
	}

	if(titleValues[2] != "" && titleValues[2] != null)
		objGrid.SetExcelTitle(1, ls_subTitle);

	/* 그리드 출력 옵션 셋팅 */
	if(optionStr != null && optionStr != "") optionValues = optionStr.split(",");
	if(optionValues[0] != null && optionValues[0] != "" && optionValues[0]=="true") lOption += 1; //Supress
	if(optionValues[1] != null && optionValues[1] != "" && optionValues[1]=="true") lOption += 2; //Show False인 칼럼 출력

	lOption += 4;   //Excel을 화면에 띄우지 않고 파일로만 저장
	lOption += 8;   //Excel파일로 저장
	lOption += 16;  //파일저장시 대화상자 띄움
	//lOption += 32;  //Excel파일의 워크시트에 추가

	  objGrid.GridToExcel(sheet_name, file_path, lOption);
}


//==============================================================================
//Description	: 특정 데이타셋에서 검색어를 가지고 LIKE연산을 수행한다
//Parameter		: dtsData - 검색할 대상 데이타셋
//						  col_name - 검색할 칼럼명
//						  search_str - 검색어
//Return Value	: 검색결과 로우(없으면 0리턴)
//
//대상객체 데이타셋의 로우포지션+1 부터 검색을 시작
//검색결과가 없으면 첫번째 부터 로우포지션까지 다시 검색
//==============================================================================
function fLikeSearch(dtsData, col_name, search_str) {

	/* 검색어로 \문자는 사용하지 못하도록 막는다(검색시 오류발생) */
	for(j=0; j<search_str.length; j++) {
		//if(search_str.charCodeAt(j) == 92) {alert("\문자는 검색어로 사용하실 수 없습니다!"); return 0;  }
		if(search_str.charCodeAt(j) == 92) {fMessage('WZZZZ0224', '\\문자는 검색어로 사용할', '2'); return 0;  }
	}

	var li_pos = 0;   //검색결과 로우 포지션
	var ls_str = "";  //데이타셋의 행에 있는 검색할 대상 문자열 셋팅 변수

	/* 현재 데이타셋의 로우포지션 부터 마지막 로우까지 검색을 한다 */
	for(i=dtsData.RowPosition+1; i<=dtsData.CountRow; i++) {

		ls_str = dtsData.NameValue(i, col_name).toLowerCase();
		ls_search = new RegExp(search_str.toLowerCase());
		li_pos = ls_str.match(ls_search);

		if(li_pos != null)  return i;
	}

	/* 검색결과 없을 경우 첫번째 로우부터 현재 로우포지션까지 검색을 한다 */
	for(i=1; i<=dtsData.RowPosition; i++) {

		ls_str = dtsData.NameValue(i, col_name).toLowerCase();
		ls_search = new RegExp(search_str.toLowerCase());
		li_pos = ls_str.match(ls_search);

		if(li_pos != null)  return i;
	}

	fMessage('WZZZZ0228', '해당 데이터', '2');
	return 0;
}


// ※ 파라미터로 object 를 할당하여 오브젝트에 직접 값을 받을수도 있지만 리턴 value 로도 받을수 있다.
// 예) 색상 선택의 경우
//	   var vReturnValue = fPopup("3");
//     alert(vReturnValue);
// 예) 달력,우편번호,부서정보조회 의 경우
//     var vReturnValue = fPopup("1");
//     alert(vReturnValue[index]);
// 예) 사원정보 조회 의 경우
//     alert(vReturnValue[row][col]);
//==============================================================================
function fPopup(pType, param1, param2, param3, param4, param5, param6, pOffsetX, pOffsetY) {
	//var vRet = null;
  	var vURL = "";
	var vXPos = 0;
  	var vYPos = 0;
  	var vFuncParam = "";
	var vFeature = "";
	switch (pType) {
		case "1" :
			vURL = "/js/IGZZ00_Calendar.html";

			vFuncParam = "RetStrObj="+param1+ "&RetType="+param2+"&ColId="+param3;
			vFuncParam = vFuncParam  + ((param4==null || param4=="") ? ("&setYear=null&setMon=null&setDay=null") : ("&setYear="+param4+"&setMon="+param5+"&setDay="+param6));

			if(pOffsetX==null || pOffsetX == "") pOffsetX = 0;
			if(pOffsetY==null || pOffsetY == "") pOffsetY = 0;
			if(event==null || event=="") {
	  			vXPos = vXMousePos-5+pOffsetX;
	  			vYPos = vYMousePos-5+pOffsetY;
			} else {
	  			vXPos = event.screenX-5+pOffsetX;
	  			vYPos = event.screenY-5+pOffsetY;
			}
	
			vFeature = "dialogWidth:168px;dialogHeight:256px;dialogTop:"+vYPos+"px;dialogLeft:"+vXPos+"px;scroll:no;status:no;help:no;resizable:no;";
			break;

		case "2" :
			vURL = "/html/pub/IGZZ00_Zip_Code.html";
			vFuncParam = "RetStrObj=" + param1 + "&RetType=" + param2;
			vXPos = screen.width / 5;
  			vYPos = screen.height / 5;
			vFeature = "dialogWidth:460px;dialogHeight:480px;dialogTop:"+vYPos+"px;dialogLeft:"+vXPos+"px;scroll:no;status:no;help:no;resizable:no;";
			break;

		case "3" :
			vURL = "/html/pub/IGZZ00_ColorPicker.html";
			vFuncParam = "RetStrObj=" + param1 + "&RetType=text&ColId=0";
			vFuncParam = vFuncParam  + ((param4==null || param4=="") ? ("&FixColor=null") : ("&FixColor="+param4));
			if(pOffsetX==null || pOffsetX == "") pOffsetX = 0;
			if(pOffsetY==null || pOffsetY == "") pOffsetY = 0;
			if(event==null || event=="") {
	  			vXPos = vXMousePos-5+pOffsetX;
	  			vYPos = vYMousePos-5+pOffsetY;
			} else {
	  			vXPos = event.screenX-5+pOffsetX;
	  			vYPos = event.screenY-5+pOffsetY;
			}
			//vFeature = "dialogWidth:168px;dialogHeight:188px;dialogTop:"+vYPos+"px;dialogLeft:"+vXPos+"px;scroll:no;status:no;help:no;resizable:no;";
			vFeature = "dialogWidth:180px;dialogHeight:194px;dialogTop:"+vYPos+"px;dialogLeft:"+vXPos+"px;scroll:no;status:no;help:no;resizable:no;";
			break;

		case "4" :
			vURL = "/html/pub/IGZZ00_Pstn_Info.html";
			vFuncParam = "RetStrObj="+(param1==""||param1==null?"null":param1)+"&RetType=text";
			vXPos = screen.width / 5;
  			vYPos = screen.height / 5;
			vFeature = "dialogWidth:266px;dialogHeight:544px;dialogTop:"+vYPos+"px;dialogLeft:"+vXPos+"px;scroll:no;status:no;help:no;resizable:no;";
			break;

		case "5" :
			vURL = "/html/pub/IGZZ00_Plefndtn.html";
			vFuncParam = "RetStrObj="+(param1==""||param1==null?"null":param1)+"&RetType=text";
			vXPos = screen.width / 5;
  			vYPos = screen.height / 5;
			vFeature = "dialogWidth:800px;dialogHeight:544px;dialogTop:"+vYPos+"px;dialogLeft:"+vXPos+"px;scroll:no;status:no;help:no;resizable:no;";
			break;
	}
	vParamForPubHtml = vFuncParam;
	window.showModalDialog(vURL, window, vFeature);
	
	//달력선택 후 포커스 셋팅
	if(pType == "1" && param2 != "grid") {
		document.getElementById(param1).focus();
	}
	
	////달력선택 후 포커스 셋팅
	//if(pType == "1") {
	//	document.getElementById(param1).focus();
	//}
	
	//window.open(vURL, "", "modal=yes,dialog=yes,scrollbars=no,status=no,height=300,width=300");
	//alert("vRet="+vRet);

	//if(vRet=="" || vRet==null) {
		//alert("it's null");
	//	return null;
	//}
	//alert("it's not null");
	return vParamForPubHtml;
}

	function dubleCal(param1, param2, param3, param4, param5,param6,param7,pOffsetX, pOffsetY){
		var vURL = "";
		var vXPos = 0;
	  	var vYPos = 0;
	  	var vFuncParam = "";
		var vFeature = "";
		
		vURL = "/js/IGZZ00_Calendar2.html";
		
		//alert("param1 = "+param1);
		//alert("param2 = "+param2);
		//alert("param3 = "+param3);
		
		vFuncParam = "RetStrObj="+param1+"&RetEndObj="+param2+"&RetType="+param3;
		vFuncParam = vFuncParam  + ((param4==null || param4=="") ? ("&setYear=null&setMon=null&setDay=null") : ("&setYear="+param5+"&setMon="+param6+"&setDay="+param7));

		if(pOffsetX==null || pOffsetX == "") pOffsetX = 0;
		if(pOffsetY==null || pOffsetY == "") pOffsetY = 0;
		if(event==null || event=="") {
  			vXPos = vXMousePos-5+pOffsetX;
  			vYPos = vYMousePos-5+pOffsetY;
		} else {
  			vXPos = event.screenX-5+pOffsetX;
  			vYPos = event.screenY-5+pOffsetY;
		}

		vFeature = "dialogWidth:340px;dialogHeight:256px;dialogTop:"+vYPos+"px;dialogLeft:"+vXPos+"px;scroll:no;status:no;help:no;resizable:no;";
		
		vParamForPubHtml = vFuncParam;
		window.showModalDialog(vURL, window, vFeature);
		
		return vParamForPubHtml;
	
	}
	
	


//==============================================================================
//Description	: 시스템일시를 리턴
//Parameter		: gubun : 리턴받을 일싱의 형식구분
//							1 : 20060406124536 (YYYYMMDDHHmmSS) 년월일시분초(14자리)
//							2 : 20060406(YYYYMMDD) 년월일(8자리)
//							3 : 2006(YYYY) 년도(4자리)
//							4 : 12(MM) 월(2자리)
//							5 : 31(DD) 일(2자리)
//							6 : 246060 시분초(6자리)
//							7 : 24(HH) 시(2자리)
//							8 : 60(MIN) 분(2자리)
//							9 : 60(SS) 초(2자리)
//							10 : 월~일 요일(1자리)
//Return Value	: returnVal : 형식에 맞는 시스템일시
//==============================================================================
function fGetTime(gubun) {
	var retVal="";
	var vObject = fGetForMain();
	vObject.top.left.fTimeQuery();

	if (gubun == "1") {
		retVal =vObject.top.left.vServerDateTime;
	} else if (gubun == "2") {
		retVal = vObject.top.left.vServerDateTime.substring(0,8);
	} else if (gubun == "3") {
		retVal = vObject.top.left.vServerDateTime.substring(0,4);
	} else if (gubun == "4") {
		retVal = vObject.top.left.vServerDateTime.substring(4,6);
	} else if (gubun == "5") {
		retVal = vObject.top.left.vServerDateTime.substring(6,8);
	} else if (gubun == "6") {
		retVal =vObject.top.left.vServerDateTime.substring(8,14);
	} else if (gubun == "7") {
		retVal =vObject.top.left.vServerDateTime.substring(8,10);
	} else if (gubun == "8") {
		retVal = vObject.top.left.vServerDateTime.substring(10,12);
	} else if (gubun == "9") {
		retVal = vObject.top.left.vServerDateTime.substring(12,14);
	} else if (gubun == "10") {
		retVal = fGetDate(vObject.top.left.vServerDateTime.substring(0,8));
	} else {
		retVal = vObject.top.left.vServerDateTime.substring(0,8);	//입력하지 않으면 default 년월일 8자리
	}

	return retVal;
}

//==============================================================================
//Description  	: EMEDIT에 날짜입력을 위한 칼렌더 Call
//Parameter    	: txt - text 아이디, gubun - 사용구분(emedit)
//Return Value		: NULL
//
//임시사용
//==============================================================================

function fopenCalendar(txt, gubun) {

	var strleft = "left=" + eval(window.screenLeft + window.event.clientX ) ;
	var strtop  = ",top=" + eval(window.screenTop + window.event.clientY ) ;

	window.open("../html/calendar.html?txt="+txt+ "&gubun="+gubun, "Calendar", "scrollbars=no,width=161,height=195,resizable=no, top=300, left=500");
}
//==============================================================================
//Description  	: 클라이언트의 시각
//Parameter    	: gubun : 리턴형식(1:YYYYMMDD년월일8자리, 2:YYYYMMDDHHmmSS년월일시분초14자리, 3:HHmmSS)시분초6자리
//Return Value	: rtnVal : 형식에 맞는 시간
//==============================================================================
function fGetDateClient(gubun) {
	var today = new Date();
	var year;
	var month;
	var day;
	var hour;
	var minutes;
	var seconds;
	var rtnVal;

	year = today.getYear();
	month = today.getMonth()+1;
	if (month<10) {
		month = "0" + month;
	}
	day = today.getDate();
	if (day<10) {
		day = "0" + day;
	}
	hour = today.getHours();
	if (hour<10) {
		hour = "0" + hour;
	}
	minutes = today.getMinutes();
	if (minutes<10) {
		minutes = "0" + minutes;
	}
	seconds = today.getSeconds();
	if (seconds<10) {
		seconds = "0" + seconds;
	}

	switch (gubun){
		case "1" : 	//년월일 8자리
			rtnVal = year + month + day;
			break;
		case "2" :	//년월일시분초 14자리
			rtnVal = year + month + day + hour + minutes + seconds;
			break;
		case "3" :
			rtnVal = hour + minutes ;
			break;
		default :
			rtnVal = year + month + day;
			break;
	}
	return rtnVal;
}





//==============================================================================
//Description	: 가우스 오브젝트를 활성화 혹은 비활성화 스타일로 셋팅
//Parameter		: obj - 오브젝트
//						  objType - 권한에 따른 값(0:권한없음, 1:조회, 2:수정, 3:신규/삭제)
//Return Value	: NULL
//==============================================================================
function fGauceControl(obj, objType) {

	switch (obj.attributes.classid.nodeValue.toUpperCase()) {
		case "CLSID:60109D65-70C0-425C-B3A4-4CB001513C69": // LuxCombo Component
			if(objType == "1")  {
				obj.DisabledBackColor = "#EFEFEF";
			} else {
				obj.DisabledBackColor = "#FFFFFF";
			}
        	break;

		case "CLSID:E6876E99-7C28-43AD-9088-315DC302C05F": // EMedit Component
			if(objType == "0") {
				obj.DisabledBackColor = "#EFEFEF";
				obj.Enable  = false;
				obj.Editable = false;
			} else if(objType == "1") {
				obj.DisabledBackColor = "#EFEFEF";
			} else {
				obj.Enable  = true;
				obj.DisabledBackColor = "#FFFFFF";
			}
			break;

		case "CLSID:754F3DC4-0C79-4C92-AD64-A806D8FF2AB0": // Radio Component
			break;

		case "CLSID:B5F6727A-DD38-11D2-973D-00104B15E56F": // Chart Component
			break;

		case "CLSID:FD4C6571-DD20-11D2-973D-00104B15E56F": // CodeCombo Component
			break;

		case "CLSID:4401B994-DD33-11D2-B539-006097ADB678": // TreeView Component
			if(objType == "0") {
				obj.Enable = false;
			} else {
				obj.Enable = true;
			}
			break;

		case "CLSID:1F57AEAD-DB12-11D2-A4F9-00608CEBEE49": // Grid Component
			if (objType == "0") {
				obj.Enable = false;
				obj.Editable = false;
			}

			if (objType == "1") {
				obj.Enable = true;
				obj.Editable = false;
			}

			if (objType == "2") {
				obj.Enable = true;
				obj.Editable = false;

				if (pEdit) {
					obj.Editable = true;
				}
			}

			if (objType == "3") {
				obj.Enable = true;
				obj.Editable = false;

				if (pEdit) {
					obj.Editable = true;
				}
			}
			break;
	}
}



//==============================================================================
// 현대 B&:P 추가
//==============================================================================
function getDateTime(sformat,sdiv)
{
    var nowDate = fGetToday();
    
    var tmpstr=nowDate;
    var tmpYear = nowDate.substring(0,4);
    var tmpMonth = nowDate.substring(4,6);
    var tmpDay = nowDate.substring(6,8);
    var tmpHour = nowDate.substring(8,10);    
    var tmpMin = nowDate.substring(10,12);
    var tmpSec = nowDate.substring(12,14);    
    
    
    if(sformat.toUpperCase() =="YYYY")
    {
      tmpstr = tmpYear;
    } else if (sformat.toUpperCase() == "MM"){
      tmpstr = tmpMonth;
    } else if (sformat.toUpperCase() == "DD"){
      tmpstr = tmpDay;      
    } else if (sformat.toUpperCase() == "HH"){
      tmpstr = tmpHour;  
    } else if (sformat.toUpperCase() == "MI"){
      tmpstr = tmpMin;       
    } else if (sformat.toUpperCase() == "SS"){
      tmpstr = tmpSec;  
    } else if (sformat.toUpperCase() == "YYYYMM"){
      tmpstr = tmpYear + sdiv+ tmpMonth;  
    } else if (sformat.toUpperCase() == "YYYYMMDD"){
      tmpstr = tmpYear + sdiv+ tmpMonth + sdiv + tmpDay;  
    } else if (sformat.toUpperCase() == "YYYYMMHHMISS"){
      tmpstr = tmpYear + sdiv+ tmpMonth + sdiv + tmpDay; 
      if (sdiv !=""){
         tmpstr += " "+ tmpHour + ":"+ tmpMin +":"+tmpSec;
      } else {
         tmpstr +=  tmpHour + tmpMin +tmpSec;
      }   
    }  
    
    
    return tmpstr;
}    
    
//==============================================================================
// 현대 B&:P 추가
// 권한 추가 auth = session 에서 권한값을  받아옴. formName의 경우 각 폼의 이름을 전송 받음.
//============================================================================== 


function am_get_index(key)  {
  for (var idx=0 ; idx < this.length ; idx++)  {
    if ( this[idx] == key ) return idx;
  }
  return false;
}


function fButAuth(auth,formName){
	var f = "";
	f = eval("document."+formName);
	if(auth == 'YYYYYYY'){
		
	}
	//alert("auth = "+auth);
	//alert("this.length = " +this.length);
	//for (var idx=0 ; idx < this.length ; idx++)  {
    //	if ( this[idx] == 'btn_search' ) return idx;
  	//}
  	
  	//alert("this[idx] = " +this[idx]);
  	
  	//for (var idx1=0 ; idx1 < this.length ; idx1++)  {
    //	if ( this[idx1] == 'btn_cancel' ) return idx1;
  	//}
	
	//alert("idx = "+idx);
	//alert("idx1 = "+idx1);
	// i_search
	
	//if(idx != 0){
		//alert("auth.substr(0,1)"+auth.substr(0,1));
		
		
		
	var searchImgIDs = new Array('btn_search'); // 조회
	var newImgIDs = new Array('btn_new','btn_blandadd','btn_addrow','btn_save'); // 쓰기
	var saveImgIDs = new Array('btn_savae'); // 수정
	var deleImgIDs = new Array('btn_delete','btn_deleterow'); // 삭제
	var printImgIDs = new Array('btn_print'); // 프린트
	var excelImgIDs = new Array('btn_excel'); // 엑셀
	
	var vObj = document.all[searchImgIDs[0]];
	if(typeof(vObj) != "undefined"){	
		if(auth.substr(0,1) == 'N'){
			var vObjSrc = (vObj.src.match(/_d.gif$/) == null )? vObj.src.replace(/.gif*/, "_d.gif"):vObj.src;
			vObj.src = vObjSrc;
			vObj.disabled = true;
			//f.btn_search.style = "cursor:hand";
		} else {
			//f.btn_search.disabled = true;
			//f.btn_search.style="cursor:default";
		}
	}
	
	
	//alert("newImgIDs.length = " +newImgIDs.length);
	for(var i=0; i<newImgIDs.length; i++){
		var vObj = document.all[newImgIDs[i]];
		if(typeof(vObj) != "undefined"){
			if(auth.substr(1,1) == 'N'){
				//f.btn_new.style="cursor:hand";
				
				var vObjSrc = (vObj.src.match(/_d.gif$/) == null )? vObj.src.replace(/.gif*/, "_d.gif"):vObj.src;
				vObj.src = vObjSrc;
				vObj.disabled = true;
				//
			} else {
				//f.btn_new.style="cursor:default";
				//f.btn_new.disabled = true;
			}
		}
	}
	
	for(var i=0; i<saveImgIDs.length; i++){
	var vObj = document.all[saveImgIDs[i]];
		if(typeof(vObj) != "undefined"){
			if(auth.substr(2,1) == 'N'){
				//f.btn_savae.style="cursor:hand";84411		
				var vObjSrc = (vObj.src.match(/_d.gif$/) == null )? vObj.src.replace(/.gif*/, "_d.gif"):vObj.src;
				vObj.src = vObjSrc;
				vObj.disabled = true;
				
				//
			} else {
				//f.btn_savae.style="cursor:default";
				//f.btn_savae.disabled = true;
			}
		}
	}
	
	for(var i=0; i<deleImgIDs.length; i++){
		var vObj = document.all[deleImgIDs[i]];
		if(typeof(vObj) != "undefined"){
			if(auth.substr(3,1) == 'N'){
				var vObjSrc = (vObj.src.match(/_d.gif$/) == null )? vObj.src.replace(/.gif*/, "_d.gif"):vObj.src;
				vObj.src = vObjSrc;
				vObj.disabled = true;
				//f.btn_delete.style="cursor:hand";
			} else {
				//f.btn_delete.disabled = true;
				//f.btn_delete.style="cursor:default";
			}
		}
	}
	
	for(var i=0; i<printImgIDs.length; i++){
		var vObj = document.all[printImgIDs[i]];
		if(typeof(vObj) != "undefined"){
			if(auth.substr(4,1) == 'N'){
				var vObjSrc = (vObj.src.match(/_d.gif$/) == null )? vObj.src.replace(/.gif*/, "_d.gif"):vObj.src;
				vObj.src = vObjSrc;
				vObj.disabled = true;
				//f.btn_search.style="cursor:hand";
			} else {
				//f.btn_search.disabled = true;
				//f.btn_search.style="cursor:default";
			}
		}
	}
	
	for(var i=0; i<excelImgIDs.length; i++){
		var vObj = document.all[excelImgIDs[i]];
		if(typeof(vObj) != "undefined"){
			if(auth.substr(5,1) == 'N'){
				var vObjSrc = (vObj.src.match(/_d.gif$/) == null )? vObj.src.replace(/.gif*/, "_d.gif"):vObj.src;
				vObj.src = vObjSrc;
				vObj.disabled = true;
				//f.btn_search.style="cursor:hand";
			} else {
				//f.btn_search.disabled = true;
				//f.btn_search.style="cursor:default";
			}
		}
	}
	if(auth == 'NNNNNNN' || auth == ''){
		alert(" 모든 권한이 없습니다.\n프로그램을 종료 합니다.");
		window.close();
	}
}
//오프젝트 처리
function __WS__(id){
	document.write(id.text);id.id='';
}

//달력팝업 오픈
function fInputCal(obj)
{   
	strleft = "dialogleft:" + eval(window.screenLeft + window.event.clientX ) ;
	strtop = ";dialogtop:" + eval(window.screenTop + window.event.clientY ) ;
	args = obj.Text;
	var result = window.showModalDialog("/jsp/cm/cm_calendar.jsp",args,strleft +  strtop +";dialogWidth:230px; dialogHeight:240px;scroll:no;status:no;titlebar:no;center:no;help:yes;");     

  if(!is_null(result))
   {
      obj.Text = result;
   } 	
}

//달력팝업 오픈--년월만 반환
function fInputCal2(obj)
{   
	strleft = "dialogleft:" + eval(window.screenLeft + window.event.clientX ) ;
	strtop = ";dialogtop:" + eval(window.screenTop + window.event.clientY ) ;
	args = obj.Text;
	var result = window.showModalDialog("/jsp/cm/cm_calendar.jsp",args,strleft +  strtop +";dialogWidth:230px; dialogHeight:240px;scroll:no;status:no;titlebar:no;center:no;help:yes;");     

  if(!is_null(result))
   {
      obj.Text = result.substring(0,6);
   } 	
}

//null 값check
function is_null(item_var) {
	
	if(item_var == "" || item_var == null || item_var == 'undefined' || item_var == "<undefined>"  || item_var == " ") 
		return true;
	
	return false;
}
//월 셋팅 (1-12)
function onMonth(){
//	month_Ds.SetDataHeader("cd:STRING(2),code:STRING(2),name:STRING(4)");
//	for(var i=1;i<13;i++){
//		month_Ds.AddRow();
//		month_Ds.NameValue(i,"cd") = i;
//		if((i-10)<0){month_Ds.NameValue(i,"code")='0'+i}else{month_Ds.NameValue(i,"code")=i}
//		month_Ds.NameValue(i,"name") = i+'월';
//	}
}
//년도
function onDuyer(wrk_gu)	
{
	duyer_Ds.DataId = "/jsp/cm/cm_yerchasu_act.jsp?mode=yer&wrk_gu="+wrk_gu;
	duyer_Ds.reset();
}
//차수
function onChasu(wrk_gu, duyer)	
{
	chasu_Ds.DataId = "/jsp/cm/cm_yerchasu_act.jsp?mode=chasu&wrk_gu="+wrk_gu+"&duyer="+duyer;
	chasu_Ds.reset();
}

// 백화점그룹 법인전체  20080806 
function onCrpAll()	
{
	crp_Ds.DataId = "/jsp/cm/cm_comcode_act.jsp?mode=crpAll";
	crp_Ds.reset();
}

// 백화점 법인만
function onCrp()	
{
	crp_Ds.DataId = "/jsp/cm/cm_comcode_act.jsp?mode=crp";
	crp_Ds.reset();
}
//사업소
function onBsn(crp)	
{
	bsn_Ds.DataId = "/jsp/cm/cm_comcode_act.jsp?mode=bsn&crp="+crp;
	bsn_Ds.reset();
}
//조직구분
function onJojikgbn()	
{
	jojikgbn_Ds.DataId = "/jsp/cm/cm_comcode_act.jsp?mode=common&mcode=67";
  jojikgbn_Ds.reset();
}
//예산마감
function getAutBud(crp,bsn,yer,chs,gbn)	
{
	var cmpn   = 'N'; //전사
  var saup   = 'N'; //사업소
  var sale   = 'N'; //매출
  var pseamt = 'N'; //인건비
  var etc    = 'N'; //기타
	budaut_Ds.DataId = "/jsp/cm/cm_authority_act.jsp?mode=bud"+
	                   "&crp="+crp+
	                   "&bsn="+bsn+
	                   "&yer="+yer+
	                   "&chs="+chs;
  budaut_Ds.reset();
  
  if (budaut_Ds.CountRow > 0){
  	cmpn   = budaut_Ds.NameValue(1,"CMPN");
    saup   = budaut_Ds.NameValue(1,"SAUP");
    sale   = budaut_Ds.NameValue(1,"SALE");
    pseamt = budaut_Ds.NameValue(1,"PSEAMT");
    etc    = budaut_Ds.NameValue(1,"ETC");
  }
  //if (cmpn == 'Y') return 'Y';
  //else if (ss_au_jojik < 2) return 'N';
  //else 
  if (ss_au_jojik < 3) {
  	if (saup == 'Y') return 'Y'; else return 'N';
  }else{
  	//매출
  	if (gbn == 1){
  		if (ss_au_jojik <= 5 && sale == 'Y') return 'Y'; else return 'N';
  	//인건비
  	}else if (gbn == 2){
  		if (ss_au_jojik <= 5 && pseamt == 'Y') return 'Y'; else return 'N';
  	//기타
  	}else if (gbn == 3){
  		if (ss_au_jojik <= 5 && etc == 'Y') return 'Y'; else return 'N';
  	}
  }
  
  
}
//추정마감
function getAutDed(crp,bsn,yer,chs)	
{
	var cmpn   = 'N'; //전사
  var saup   = 'N'; //사업소
  var part   = 'N'; //파트
	dedaut_Ds.DataId = "/jsp/cm/cm_authority_act.jsp?mode=ded"+
	                   "&crp="+crp+
	                   "&bsn="+bsn+
	                   "&yer="+yer+
	                   "&chs="+chs;
  dedaut_Ds.reset();
  
  if (dedaut_Ds.CountRow > 0){
  	cmpn   = dedaut_Ds.NameValue(1,"CMPN");
    saup   = dedaut_Ds.NameValue(1,"SAUP");
    part   = dedaut_Ds.NameValue(1,"PART");
  }
  //if (cmpn == 'Y') return 'Y';
  //else if (ss_au_jojik < 2) return 'N';
  //else 
  if (ss_au_jojik < 3) {
  	if (saup == 'Y') return 'Y'; else return 'N';
  }else if (ss_au_jojik <= 5 && part == 'Y') return 'Y'; else return 'N';
}
//실적마감
function getAutRes(crp,bsn,yer,chasu,mm,gbn)	
{
	var cmpn   = 'N'; //전사
  var saup   = 'N'; //사업소
	resaut_Ds.DataId = "/jsp/cm/cm_authority_act.jsp?mode=res"+
	                   "&crp="+crp+
	                   "&bsn="+bsn+
	                   "&yer="+yer+
	                   "&mm="+mm+
	                   "&gbn="+gbn+
	                   "&chasu="+chasu;
  resaut_Ds.reset();

  if (resaut_Ds.CountRow > 0){
  	cmpn   = resaut_Ds.NameValue(1,"CMPN");
    saup   = resaut_Ds.NameValue(1,"SAUP");
  }
  //if (cmpn == 'Y') return 'Y';
  //else if (ss_au_jojik < 2) return 'N';
  //else 
  if (saup == 'Y') return 'Y'; 
  //else if (ss_au_jojik >= 3) return 'Y';
  else return 'N';
}
/*연추정 13월 체크*/
function getChasuChk(crp,bsn,yer,chasu)	
{
	ComonDs1.DataId = "/jsp/cm/cm_comcode_act.jsp?mode=chasuchk"+
	                   "&crp="+crp+
	                   "&bsn="+bsn+
	                   "&yer="+yer+
	                   "&chasu="+chasu;
  ComonDs1.reset();

  if (ComonDs1.CountRow > 0){
  	var st_mm   = ComonDs1.NameValue(1,"ST_MM");
		if (st_mm == '13') return 'Y';
  }
  return 'N';
}

//예산마감
function getAutBud_cmp(crp,bsn,yer,chs,gbn)	
{
	var cmpn   = 'N'; //전사
  var saup   = 'N'; //사업소
  var sale   = 'N'; //매출
  var pseamt = 'N'; //인건비
  var etc    = 'N'; //기타
  var actr   = 'N'; //경관팀마감
	budaut_Ds.DataId = "/jsp/cm/cm_authority_act.jsp?mode=bud"+
	                   "&crp="+crp+
	                   "&bsn="+bsn+
	                   "&yer="+yer+
	                   "&chs="+chs;
  budaut_Ds.reset();
  
  if (budaut_Ds.CountRow > 0){
  	cmpn   = budaut_Ds.NameValue(1,"CMPN");
    saup   = budaut_Ds.NameValue(1,"SAUP");
    sale   = budaut_Ds.NameValue(1,"SALE");
    pseamt = budaut_Ds.NameValue(1,"PSEAMT");
    etc    = budaut_Ds.NameValue(1,"ETC");
    actr   = budaut_Ds.NameValue(1,"ACTR");
  }
  if (actr != 'Y') return 'Y';
  if (cmpn == 'Y') return 'Y';
  else if (ss_au_jojik < 2) return 'N';
  else if (ss_au_jojik < 3) {
  	if (saup == 'Y') return 'Y'; else return 'N';
  }else{
  	//매출
  	if (gbn == 1){
  		if (ss_au_jojik <= 5 && sale == 'Y') return 'Y'; else return 'N';
  	//인건비
  	}else if (gbn == 2){
  		if (ss_au_jojik <= 5 && pseamt == 'Y') return 'Y'; else return 'N';
  	//기타
  	}else if (gbn == 3){
  		if (ss_au_jojik <= 5 && etc == 'Y') return 'Y'; else return 'N';
  	}
  } 
}
//-------------------------------------------------------------------------------
// Grid 검색 위치변경
// 입력값 : DataSet     : 가우스 DataSet명
// 입력값 : Grid        : 가우스 Grid명
// 입력값 : FieldName   : 가우스 검색 필드명
// 입력값 : sVal        : 검색어
// 입력값 : flag        : 01: 코드값, 02: 문자
//------------------------------------------------------------------------------

	function fncDataPostion(DataSet,Grid,FieldName,sVal,flag)
	{
   	var msg="";
   	var NextFileNmae="";
   	if(flag == '01') 
   	{   
      if(sVal.length == 1)      sVal+="101";
      else if(sVal.length == 2) sVal+="01";
      else if(sVal.length == 3) sVal+="1";
      else sVal=sVal.substring(0,4);
   	}   
		var curRow = DataSet.RowPosition+1;
   	
   	for(var i=curRow; i<= DataSet.CountRow; i++)
	  {   
	   	msg=DataSet.NameValue(i,FieldName);
      if (msg.indexOf(sVal)!=-1)
   		{
   			DataSet.RowPosition=i;
        Grid.SetColumn(FieldName); 
   			return true;
   		} 
    }
    return false;
	}
//-------------------------------------------------------------------------------
// Grid 검색 위치변경
// 입력값 : DataSet     : 가우스 DataSet명
// 입력값 : Grid        : 가우스 Grid명
// 입력값 : FieldName   : 가우스 검색 필드명
// 입력값 : sVal        : 코드
//------------------------------------------------------------------------------

	function fncDataPostion2(DataSet,Grid,FieldName,sVal)
	{
	   var msg="";
	   if(sVal.length == 1)      sVal+="101";
	   else if(sVal.length == 2) sVal+="01";
	   else if(sVal.length == 3) sVal+="1";
	   else sVal=sVal.substring(0,4);
	
	   for(var i=0; i <= DataSet.CountRow; i++)
		 {   
				msg=DataSet.NameValue(i,FieldName);
	      if (msg.indexOf(sVal)!=-1)
	   		{
	   			DataSet.RowPosition=i;
	        Grid.SetColumn(FieldName); 
	   			return true;
	   		} 
	   }
	   return false;
	}	
	/*사용않함 - 2008.04.10 현재:사업소/부문구분*/
	function onGbnChk(jojikcde)
	{
		var len = jojikcde.length;
		var zifnum = '';
		if (len <= 0) return 'N';
		for(var i= 0; i < len-3; i++) zifnum += '0';	
		if (jojikcde.substring(3) == zifnum) return 'Y';
		return 'N';
	}
	/*버튼 이미지 변환 disable = true*/
	function onButAuth(obj)
	{
		  var df = obj.src.substring(obj.src.lastIndexOf(".")-2);
		  if (df == "_d.gif") return; 
		  var vObjSrc = obj.src.replace(/.gif*/, "_d.gif");
			obj.src = vObjSrc;
			obj.disabled = true;
	}
	/*버튼 이미지 변환 disable = false*/
	function onRe_ButAuth(obj)
	{
		  var vObjSrc = obj.src.replace(/_d.gif*/, ".gif");
			obj.src = vObjSrc;
			obj.disabled = false;
	}
	
	/*조직조회 LIKE */
	function onJojikChk(obj, gbn)
	{
		var jojikcde    = '';
		var mxlen       = '';
		var jojikcde_ck = '';
		var len         = '';
		var gbchk       = 'N';
		
		if(typeof obj == 'object')
		{
			jojikcde = obj.Text;
			mxlen = obj.MaxLength;
		}else{
			jojikcde = obj;
			mxlen = 0;
		}
		len = jojikcde.length;
		if (len < mxlen) return jojikcde_ck;
		
		//gbchk = onGbnChk(jojikcde);
		
		/*사업소*/
		if (gbn == '1') 
		{
			jojikcde_ck = jojikcde.substring(0,2);
		}
		/*부문*/
		else if (gbn == '2') 
		{
			jojikcde_ck = jojikcde.substring(0,3);
		}
		/*팀*/
		else if (gbn == '3') 
		{
			jojikcde_ck = jojikcde.substring(0,6);
		}
		/*파트*/
		else if (gbn == '4') 
		{
			jojikcde_ck = jojikcde.substring(0,9);
		}
		else 
		{
			for(var i= 0; i < len; i=i+3)
			{
				var substrcde = jojikcde.substring(i,i+3);
				if(substrcde != '000') jojikcde_ck += substrcde;
			}
		}
		return jojikcde_ck
	}
  /*계정조회 LIKE */
	function onAcctChk(obj)
	{
		var acctcde    = '';
		var mxlen      = '';
		var len        = '';
		var acctcde_ck = '';
		var substrcde  = '';
		
		if(typeof obj == 'object')
		{
			acctcde = obj.Text;
			mxlen   = obj.MaxLength;
		}else{
			acctcde = obj;
			mxlen   = 0;
		}
		len = acctcde.length;
		if (len < mxlen) return acctcde_ck;
		
		substrcde = acctcde.substring(0,4);
		if(substrcde != '0000') acctcde_ck += substrcde;
		substrcde = acctcde.substring(4,6);
		if(substrcde != '00') acctcde_ck += substrcde;
		substrcde = acctcde.substring(6,8);
		if(substrcde != '00') acctcde_ck += substrcde;
		
		return acctcde_ck
	}
	/*파일 업로드*/
	function onUpload(form,File,filenm,pathgbn,overwrite,chgfnm)
	{
		if (!File) 
		{
			alert("파일을 선택해 주십시요.");
			return false;
		}
		File = File.substr(File.lastIndexOf("\\")+1);
		//File = File.substr(0,File.lastIndexOf("."));
		
		form.target = "Fileloadifrm";
		form.method = "POST";
    form.action = "/jsp/cm/cm_fileUpload.jsp?pathgbn="+pathgbn+"&overwrite="+overwrite+"&orgfnm="+File+"&filename="+filenm+"&chgfnm="+chgfnm;
    form.submit();
	}
	/*파일 다운로드*/
	function onDownload(File,orgFile,pathgbn)
	{
		if(File == "")
		{
			alert("다운로드할 파일이 존재하지 않습니다.");
			return;
		}
		document.Fileloadifrm.location.href="/jsp/cm/cm_fileDownload.jsp?pathgbn="+pathgbn+"&File="+File+"&orgFile="+orgFile;
	}
	/*유닉스 파일삭제*/
	function onDelete(form,chgfnm,pathgbn,gbn)
	{
		if (chgfnm == "" && gbn == 0) 
		{
			alert("삭제할 파일이 존재하지 않습니다.");
			return false;
		}
		
		form.target = "Fileloadifrm";
		form.method = "POST";
    form.action = "/jsp/cm/cm_fileDelete.jsp?pathgbn="+pathgbn+"&chgfnm="+chgfnm;
    form.submit();
    return true;
	}
	/*탭화면호출*/
	function onTabMov(tabno)
	{
		if (tabno == 1) {
			top.location.href="/jsp/re/re_stndrd.jsp?pgname=기준설정&p_menu_no=WP3101&p_jobtype=AP";
		}else if (tabno == 2) {
			top.location.href="/jsp/re/re_clsSaup.jsp?pgname=사업소마감설정&p_menu_no=WP3103&p_jobtype=AP";
		}else if (tabno == 3) {
			top.location.href="/jsp/re/re_clsCmpn.jsp?pgname=전사마감설정&p_menu_no=WP3104&p_jobtype=AP";
		}else if (tabno == 4) {
			top.location.href="/jsp/re/re_mmGet.jsp?pgname=매출/재무 실적가져오기&p_menu_no=WP3102&p_jobtype=AP";
		}else if (tabno == 5) {
			alert("Tab5 준비중입니다.");
			//top.location.href="";
		}
	}
	/*탭화면호출*/
	function onTabMov1(tabno)
	{
		if (tabno == 1) {
			top.location.href="/jsp/bu/bu_budSaupClose.jsp?pgname=사업소마감설정&p_menu_no=WP2106&p_jobtype=AP";
		}else if (tabno == 2) {
			top.location.href="/jsp/bu/bu_budManagerClose.jsp?pgname=법인마감설정&p_menu_no=WP2107&p_jobtype=AP";
		}
	}
	/*탭화면호출*/
	function onTabMov2(tabno)
	{
		if (tabno == 1) {
			top.location.href="/jsp/de/de_dedYearMgt.jsp?pgname=연추정기준설정&p_menu_no=WP4101&p_jobtype=AP";
		}else if (tabno == 2) {
			top.location.href="/jsp/de/de_dedYearTermCopy.jsp?pgname=연경비추정조건복사&p_menu_no=WP4103&p_jobtype=AP";
		}else if (tabno == 3) {
			top.location.href="/jsp/de/de_dedYearSaupClose.jsp?pgname=연추정사업소마감설정&p_menu_no=WP4201&p_jobtype=AP";
		}else if (tabno == 4) {
			top.location.href="/jsp/de/de_yearManagerClose.jsp?pgname=연추정전사마감설정&p_menu_no=WP4202&p_jobtype=AP";
		}else if (tabno == 5) {
			top.location.href="/jsp/de/de_dedMonthMgt.jsp?pgname=월추정기준설정&p_menu_no=WP4102&p_jobtype=AP";
		}
	}
	/*사업계획 (안) 세부조회*/
	function onTabMov3(tabno)
	{
		if (tabno == 1) {
			top.location.href="/jsp/bu/bu_profTotView_rd.jsp?pgname=사업계획(안) 세부조회&p_menu_no=WP2402&p_jobtype=AP";
		}else if (tabno == 2) {
			top.location.href="/jsp/bu/bu_budResView.jsp?pgname=사업계획(초안) 조회&p_menu_no=WP6205&p_jobtype=AP";
		}	
	}
	/*상품매출계획편성*/
	function onTabMov4(tabno)
	{
		if (tabno == 1) {
			top.location.href="/jsp/bu/bu_salrefdata.jsp?pgname=상품매출편성 참조자료 설정&p_menu_no=WP2201&p_jobtype=AP";
		}else if (tabno == 2) {
			top.location.href="/jsp/bu/bu_salorgstd.jsp?pgname=상품매출편성 사업소기준 설정&p_menu_no=WP2202&p_jobtype=AP";
		}else if (tabno == 3) {
			top.location.href="/jsp/bu/bu_salestreg.jsp?pgname=PC별 상품매출편성&p_menu_no=WP2203&p_jobtype=AP";
		}else if (tabno == 4) {
			top.location.href="/jsp/bu/bu_salestView.jsp?pgname=상품매출예산조회&p_menu_no=WP2206&p_jobtype=AP";
		}		
	}
	/*판관비외 계획편성*/
	function onTabMov5(tabno)
	{
		if (tabno == 1) {
			top.location.href="/jsp/bu/bu_budreg.jsp?pgname=계정별 예산/편성근거 등록&p_menu_no=WP2105&p_jobtype=AP";
		}else if (tabno == 2) {
			top.location.href="/jsp/bu/bu_budiqy.jsp?pgname=계정별 전년/예산/실적 조회&p_menu_no=WP2104&p_jobtype=AP";
		}else if (tabno == 3) {
			top.location.href="/jsp/bu/bu_accBudView.jsp?pgname=계정별 예산/편성근거 조회&p_menu_no=WP2403&p_jobtype=AP";
		}	
	}
	/*백화점 부문관리*/
	function onTabMov6(tabno)
	{
		if (tabno == 1) {
			top.location.href="/jsp/bu/bu_bmAudit.jsp?pgname=경관팀사정관리&p_menu_no=WP2501&p_jobtype=AP";
		}else if (tabno == 2) {
			top.location.href="/jsp/bu/bu_bmAuditBonsa.jsp?pgname=경관팀사정관리(본사용)&p_menu_no=WP2502&p_jobtype=AP";
		}else if (tabno == 3) {
			top.location.href="/jsp/bu/bu_mgtsaupList.jsp?pgname=사업계획 사업소(안) 조회&p_menu_no=WP2503&p_jobtype=AP";
		}	
	}
	/*인건비 계획편성1*/
	function onTabMov7(tabno)
	{
		if (tabno == 1) {
			top.location.href="/jsp/bu/bu_regCostMgt.jsp?pgname=정규직 급/상여 Table 등록&p_menu_no=WP2301&p_jobtype=AP";
		}else if (tabno == 2) {
			top.location.href="/jsp/bu/bu_regemp.jsp?pgname=정규직 인원계획등록&p_menu_no=WP2302&p_jobtype=AP";
		}else if (tabno == 3) {
			top.location.href="/jsp/bu/bu_regempList.jsp?pgname=정규직 월별인원계획 조회&p_menu_no=WP2303&p_jobtype=AP";
		}else if (tabno == 4) {
			top.location.href="/jsp/bu/bu_regCostMgtList.jsp?pgname=정규직월별인건비계획조회&p_menu_no=WP2304&p_jobtype=AP";
		}else if (tabno == 5) {
			top.location.href="/jsp/bu/bu_regcost.jsp?pgname=정규인건비예산수기조정&p_menu_no=WP2309&p_jobtype=AP";
		}				
	}
	/*인건비 계획편성2*/
	function onTabMov8(tabno)
	{
		if (tabno == 1) {
			top.location.href="/jsp/bu/bu_condlCostMgt.jsp?pgname=비정규직 인원/인건비 계획등록&p_menu_no=WP2305&p_jobtype=AP";
		}else if (tabno == 2) {
			top.location.href="/jsp/bu/bu_condlCostView.jsp?pgname=비정규직 월별인건비 계획조회)&p_menu_no=WP2306&p_jobtype=AP";
		}else if (tabno == 3) {
			top.location.href="/jsp/bu/bu_sryplniqy.jsp?pgname=인원/인건비계획(사업소안) 조회&p_menu_no=WP2307&p_jobtype=AP";
		}	
	}
	
	/*가상조직조회 LIKE */
	function onshdwJojikChk(obj, gbn)
	{
		var jojikcde    = '';
		var mxlen       = '14';
		var jojikcde_ck = '';
		var len         = '';
		
		if(typeof obj == 'object') jojikcde = obj.value;
		else jojikcde = obj;

		len = jojikcde.length;
		if (len < mxlen) return jojikcde_ck;
		
		
		/*사업소*/
		if (gbn == '1') 
		{
			jojikcde_ck = jojikcde.substring(0,5);
		}
		/*부문*/
		else if (gbn == '2') 
		{
			jojikcde_ck = jojikcde.substring(0,8);
		}
		/*팀*/
		else if (gbn == '3') 
		{
			jojikcde_ck = jojikcde.substring(0,11);
		}
		/*파트*/
		else if (gbn == '4') 
		{
			jojikcde_ck = jojikcde.substring(0,14);
		}
		else 
		{
			jojikcde_ck = jojikcde.substring(0,5);
			for(var i= 5; i < len; i=i+3)
			{
				var substrcde = jojikcde.substring(i,i+3);
				if(substrcde != '000') jojikcde_ck += substrcde;
			}
		}
		return jojikcde_ck
	}
/*처리중 이미지창 오픈*/
	function gf_show_box() {
   	//var scrX = window.screen.width/2 - 530;
   	//var scrY = window.screen.height/2 - 170 ;
   	var sFeatures = "center:1;scroll:0;status:0;help:0;resizable:0;dialogWidth:"+160+"px;dialogHeight:"+110+"px"
   	//var sFeatures = "titlebar:no;status:no;help:no;dialogWidth:176px;dialogHeight:104px;scroll:no;dialogLeft:"+scrX+";dialogTop:"+scrY;
   	popup =window.showModelessDialog('/blank.html', window, sFeatures);
   	popup.document.open();
   	popup.document.write("<html><head><title>wait</title></head>");
   	popup.document.write("<meta http-equiv=Content-Type content=text/html; charset=euc-kr>");
   	popup.document.write("<body bgcolor=#E7EBEF leftmargin=0 topmargin=0 marginwidth=0 marginheight=0><table width=100% height=100% border=0 cellpadding=0 cellspacing=0>");
   	popup.document.write("<tr><td align=center><img src=/image/common/wait.gif ></img></td></tr>");
   	popup.document.write("</table></body></html>");
   	popup.document.close();
	}
/*처리중 이미지창 닫기*/
	function gf_hide_box() {
   if (popup != null) {
    	self.focus();
    	popup.close();
    }
	}
	/*trim 함수*/
	function trim(str)
  {
    //정규 표현식을 사용하여 화이트스페이스를 빈문자로 전환
    str = str.replace(/^\s*/,'').replace(/\s*$/, ''); 
    return str; //변환한 스트링을 리턴.
  }
	// Left 빈자리 만큼 padStr 을 붙인다.
  function lpad(src, len, padStr){
     var retStr = "";
     var padCnt = Number(len) - String(src).length;
     for(var i=0;i<padCnt;i++) retStr += String(padStr);
     return retStr+src;
  }